La directiva SSLVerifyClient de apache+mod_ssl, admite como valores none, optional, require y optional_noca.
Explica las diferencias entre los tres últimos, sus aplicaciones, cual elegirías según las circunstancias,
y en general todo lo que consideres significativo respecto a este tema, sin divagar.
%%%
El valor "optional" significa que el cliente puede presentar o no un certificado, pero si lo hace debe ser de
una CA válida, es decir de una reconocida por apache.
El valor "require" significa que debe presentar certificado y de una CA válida.
El valor "optional_noca" es como "optional", pero la CA no tiene porqué ser válida.
El valor "optional_noca" sólo lo emplearemos para pruebas, puesto que si la CA no es reconocida,
la autenticación carece de valor, este valor no puede usarse en un entorno de producción.
Respecto a los otros dos "optional" es más flexible que "require". Con éste último, si el cliente no presenta
certificado, el servidor manda un error, con lo que el usuario recibe un mensaje informativo (en el caso
de firefox ni eso) poco ilustrativo, pero la ventaja de "require" es que nos asegura que sólo se accede a los
objetos protegidos si hay certificado. En cambio "optional" permite mostrar un mensaje de error más ilustrativo,
pero si estamos en una página tipo php, requiere algo de programación para saber si se ha presentado o no el certificado,
y en las páginas estáticas, imágenes, etc, hay que asegurarse de que se ha presentado el certificado mediante
complejas directivas de apache. En general, la directiva "optional" tiene un interés añadido que es poder ofrecer al
visitante distintos servicios si opta o no por autenticarse, pero claro, debe hacerse, como he comentado, por
programación, puesto que el servidor concede el acceso siempre.
Como esta pregunta parece "la difícil", veamos con un símil, que no lo es. Sea una discoteca en la que en la entrada
caben varias opciones: no se paga ("none"), se paga siempre ("require"), se paga o no ("optional"), se paga si se quiere y
los billetes pueden ser falsos ("optional_noca"). Si no se paga nunca, cualquiera puede entrar y disfrutar. Si se
se paga siempre, sólo el que paga puede disfrutar, pero los que no pagan no pueden ni ver lo que hay. Si paga el
que quiere, obviamente no pagará nadie, a no ser que se ofrezcan incentivos, como "el que paga tiene barra libre y acceso a
zonas VIP". Así, el que no paga por lo menos ve algo, y el que quiere más, opta por pagar. La opción "se puede pagar o no
y además con dinero falso" es absurda en la explotación real de la discoteca y podría tener interés en una simulación o en
un entorno de pruebas para evitar usar dinero real.
%%%