2009-12-14 18 views
59

Proporciono páginas SSL en mi servidor web, y tengo una pregunta. ¿Cuál es la diferencia entre SSLCACertificateFile y SSLCertificateChainFile?Diferencia entre SSLCACertificateFile y SSLCertificateChainFile

Cuando uso SSLCertificateChainFile, recibí advertencias del navegador japonés del teléfono celular, pero cuando uso el navegador de PC (como IE, FF), no hubo ningún problema. Por otro lado, SSLCACertificateFile no causó ningún problema para ambos navegadores.

¿Hay alguna diferencia cuando los navegadores se conectan a apache?

+0

eso es demasiado fácil La raíz sig no está en el almacén raíz del teléfono móvil que es común –

Respuesta

59

SSLCertificateChainFile era una opción correcta para elegir, pero esta directiva se convirtió en obsolete as of Apache 2.4.8. Esta directiva causó que el archivo listado fuera enviado junto con el certificado a cualquier cliente que se conectara.

SSLCACertificateFile (en lo sucesivo "cacert") sustituye SSLCertificateChainFile (en lo sucesivo "Cadena"), y permite, además, el uso del certificado en cuestión para firmar cliente certificados. Este tipo de autenticación es bastante raro (al menos por el momento), y si no la está utilizando, no hay razón para aumentar su funcionalidad mediante el uso de CACert en lugar de Chain. En el otro lado, uno podría argumentar que no hay daño en la funcionalidad adicional, y CACert cubre todos los casos. Ambos argumentos son válidos.

No hace falta decir que, si le preguntas al proveedor del certificado, siempre presionarán por CACert sobre la cadena, ya que les da otra cosa (certificaciones del cliente) que pueden potencialmente venderte en el futuro. ;)

+0

Otra cosa a considerar en realidad es el algoritmo. "Pero tenga cuidado: proporcionar la cadena de certificados solo funciona si está utilizando un solo certificado de servidor basado en RSA o DSA. Si usa un par de certificados RSA + DSA acoplados, esto funcionará solo si ambos certificados usan el mismo certificado. cadena de certificados. De lo contrario, los navegadores se confundirán en esta situación ". ---- http: //httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslcertificatechainfile – Eddie

+0

@ Eddie Correcto, aunque creo que es importante mencionar que esto afecta a ambas opciones por igual. Además, es probable que valga la pena señalar que los certificados DSA son (por fortuna) extremadamente escasos. – BMDan

17

En realidad, ambas opciones pueden ser válidas.

Uso SSLCertificateChainFile para publicar su certificado firmado por la autoridad de certificación pública (VeriSign, RapidSSL, etc.)

Uso SSLCACertificateFile para proporcionar el CA 'privado', que puede emitir certificados de cliente, que puede distribuir a algunos seleccionados usuarios. Estos certificados client son en realidad geniales para la autenticación (en comparación con la autenticación de contraseña básica) y, por lo general, no es necesario que sean distribuidos por una CA pública (por lo tanto, puede ahorrar algo de dinero).

lo tanto, si desea agregar autorización segura a una parte de su sitio web, hacer esto:

<Directory /var/www/html/authorized> 
    SSLVerifyClient require 
    SSLVerifyDepth 5 

    SSLOptions +StrictRequire 
    SSLUserName SSL_CLIENT_S_DN_CN 
    SSLRequireSSL 
</Directory> 

Sólo por breve explicación SSLUserName SSL_CLIENT_S_DN_CN fijará el nombre de usuario autenticado a CommonName del certificado, frente a todo el x509 '/ OU = Foo/CN = ...' sujeto.