Normalmente con un host virtual se configura un SSL con las siguientes directivas:
Listen 443
SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt
¿Cuál es la diferencia entre SSLCertificateFile
y SSLCertificateChainFile
? El cliente ha comprado una clave CA de GoDaddy. Parece que GoDaddy solo proporciona un SSLCertificateFile
(archivo .crt) y un SSLCertificateKeyFile (archivo .key) y no en SSLCertificateChainFile
.
¿Mi ssl seguirá funcionando sin una SSLCertificateChainFile
ruta especificada?
Además, ¿hay una ruta canónica donde se deben colocar estos archivos?
apache-2.2
ssl
chrisjlee
fuente
fuente
/etc/ssl
,/usr/local/etc/ssl
o en unassl
específica subdirectorio a la página web (por ejemplo,/home/www/example.com/data
tiene el sitio web a continuaciónhome/www/example.com/ssl
tiene los CERT).Respuestas:
Estrictamente hablando, nunca necesita la cadena para que SSL funcione.
Lo que siempre necesita es un
SSLCertificateFile
archivo queSSLCertificateKeyFile
contenga la clave correcta para ese certificado.El problema es que si todo lo que le da a Apache es el certificado, todo lo que tiene que dar a los clientes que se conectan es el certificado, que no cuenta toda la historia sobre ese certificado SSL. Dice: "Estoy firmado por alguien, pero no voy a contarte sobre ellos".
Esto generalmente funciona bien, ya que la mayoría de los sistemas cliente tienen una gran cantidad de certificados de CA (tanto raíz como intermedios) que puede verificar si existe una relación de firma coincidente para establecer la confianza. Sin embargo, a veces esto no funciona; con mayor frecuencia, el problema con el que se encontrará es un cliente que no posee el certificado para una CA intermedia que firmó su certificado.
Ahí es donde entra la cadena; le permite a Apache mostrarle al cliente exactamente cómo se ve la relación de confianza, lo que puede ayudar a un cliente a llenar los espacios en blanco entre su certificado, una raíz en la que confía y el intermediario que no conoce. La cadena se puede incluir en su configuración de dos maneras:
SSLCertificateFile
, en nuevas líneas después del certificado del servidor en orden (la raíz debe estar en la parte inferior). Si lo configura de esta manera, querráSSLCertificateChainFile
señalar exactamente el mismo archivo queSSLCertificateFile
.SSLCertificateChainFile
directiva; el certificado de CA que emitió el certificado del servidor debe estar primero en el archivo, seguido de cualquier otro en la raíz.Verifique el archivo del certificado que tiene ahora. Apuesto a que no incluye los datos de la cadena. Lo que generalmente funciona bien, pero eventualmente causará un problema con algún navegador u otro.
fuente
SSLCertificateChainFile
.SSLCertificateFile
ySSLCertificateChainFile
señalar el mismo archivo combinado, que funciona, editó mi respuesta para corregir eso.Aquí hay una explicación bastante buena de las diferencias, así como los impactos observables entre elegir uno frente al otro:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
fuente
En realidad, GoDaddy te da una cadena intermedia:
http://support.godaddy.com/help/5238
Aquí hay más discusión.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
El correo electrónico de GoDaddy que le indica cómo descargar su nuevo certificado también tendrá información sobre el archivo de certificado intermedio. Está en algún lugar hacia el fondo, tal vez después de que tus ojos se vean por la verborrea y la venta adicional.
En términos de lo que sucederá si no incluye la directiva SSLCertificateChainFile adecuada: verá una gran advertencia roja en su navegador porque su sitio SSL no se validará en los navegadores, ya que no pueden seguir la cadena de certificados de su sitio cert a una propiedad de una autoridad de certificación que conoce el navegador.
fuente
Me gustaría agregar a las buenas respuestas anteriores sobre SSLCertificateChainFile que el orden de los certificados en ese archivo también es importante. Los clientes basados en OpenSSL resolverán el pedido ellos mismos, pero los clientes basados en gnutls fallarán en una cadena con el pedido incorrecto.
Pruebe el pedido con gnutls-cli, como
donde /etc/ssl/certs/ca-certificates.crt es la ubicación donde su distribución coloca los certificados combinados.
fuente