mod_ssl SSLCACertificatePath Uso adecuado o cuál es la mejor manera de manejar múltiples CA de certificados de cliente aceptables

9

Estoy tratando de usar la directiva mod_proxy SSLCACertificatePath, pero estoy un poco confundido sobre cómo usarlo correctamente.

Aquí hay dos enlaces que explican la directiva SSLCACertificatePath:
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslcacertificatepath
http://www.modssl.org/docs/2.8/ssl_reference.html#ToC13

No estoy seguro de cómo crear los enlaces simbólicos hash. El segundo enlace dice usar el archivo apache make, pero no tengo ni idea de lo que se dice exactamente allí.

Cualquier orientación amigable sería muy apreciada.

Gracias por tu tiempo.

ACTUALIZAR

El objetivo de mi pregunta era descubrir cómo manejar múltiples AC para validar los Certificados de cliente del usuario final. No me di cuenta de que se podrían usar múltiples certificados de pem en un archivo, lo que, en mi caso, es claramente la forma correcta de avanzar.

hooknc
fuente

Respuestas:

5

Si no tiene claro cómo hacer los enlaces simbólicos con nombre hash, mi sugerencia es no usar CACertificatePath, sino usar CACertificateFileen su lugar. (En realidad, esta es mi sugerencia en general: mantener adecuadamente un CACertificateFile puede ser un poco más trabajo si tiene muchos certificados de CA que cambian con frecuencia, pero probablemente no debería tener muchos certificados de CA, y de todos modos no deberían cambiar mucho ... .) Además, parece que el Makefile al que se hace referencia ha desaparecido de los tarballs de distribución de Apache (y la falta general de protesta pública puede indicar cuántas personas están utilizando el método de "ruta" para almacenar certificados :).

Dicho todo esto, si aún desea hacer esto, puede proceder según lo que DerfK dijo (ya sea obtener el antiguo Makefile o escribir su propio script / makefile que se ejecute openssl x509 -noout -hashen todos sus archivos de certificado y cree enlaces simbólicos con el nombre apropiado).

voretaq7
fuente
Gracias por su respuesta. Desafortunadamente, vamos a tener múltiples certificados de CA y estarán cambiando. ¿Sabes cómo tener múltiples certificados en un archivo? ¿Es tan simple como cortar y pegar un certificado de un archivo a otro archivo que tiene todos los certificados?
hooknc
1
De hecho, es tan simple como cortar y pegar: solía ca-bundle.crtincluirse con mod_ssl en los días de Apache 1.x (y todavía está disponible en certifie.com/ca-bundle/ca-bundle.crt.txt ). Para su cordura, comentaría el archivo para que pueda saber qué bloque de certificados pertenece a qué CA si / cuando necesite cambiarlos más tarde.
voretaq7
Noticias fantásticas. Lo más probable es que avancemos con esta solución. Afortunadamente, alguien más se encargará de generar ese archivo .crt. Gracias de nuevo por tu tiempo.
hooknc
4

Encontré un error abierto con respecto a esto. Además de descargar la versión anterior modssl.org mencionada en el error y obtener el Makefile de él, parece que puede obtener el valor del hash, openssl x509 -in foo.crt -noout -hashaunque no está claro a qué se refiere la parte ".N" (tal vez esto fue para colisiones de hash (por ejemplo, el primer certificado con hash 12345678 tiene un enlace simbólico 12345678.1 que apunta a él, el segundo certificado que tiene el mismo hash utiliza .2? ¿O tal vez comienza con .0?)

Si obtiene el Makefile.crtarchivo del antiguo modssl, creo que lo que haría sería dejarlo en la carpeta con todos sus certificados y luego ejecutarlo make -f Makefile.crten esa carpeta.

DerfK
fuente
Gracias por su respuesta. Señalar ese informe de error realmente ayudó. Aquí está el enlace directo para la descarga del recurso mencionado en el error: modssl.org/source/mod_ssl-2.8.31-1.3.41.tar.gz Miré el Makefile.crt y creo que estás en lo correcto en el esquema de numeración, pero no soy muy bueno con los scripts * nix. <hash> .1, <hash> .2, <hash> .3, etc. Intenté usar los comandos que me recomendó y luego el enlace simbólico llamado hash y todo parecía funcionar. Tendré que probar con varios archivos CA ahora.
hooknc
1
La numeración comienza con .0.
Raman
1
Aquí está el Makefileya extraído de tar.gz: gist.github.com/rocketraman/9228a42b78e094b3c2218f6e57844ee0
Raman
Ejecutar make -f Makefile.crten la carpeta con certificados da Makefile.crt ... Skippederror.
Grave