El certificado SSL Root CA no se reconoce, aunque está presente en el almacén de confianza. ¿Por qué?

El certificado SSL Root CA no se reconoce, aunque está presente en el almacén de confianza. ¿Por qué?

Fondo:

  • Servidor Ubuntu 14.10 de 64 bits en aws.amazon.com/ec2
  • Certificado de servidor PositiveSSL económico de COMODO
  • 1 certificado de servidor, 2 certificados de CA intermedia y 1 certificado de CA raíz como archivo ZIP de COMODO
  • WebCit de la Ciudadela httpsd

Problema:

La cadena de certificados concatenados parece ser correcta pero la verificación falla.

openssl s_client myhost:port

muestra la cadena de certificados y los pares emisor-sujeto se alinean correctamente a lo largo de la cadena, pero:

verify error:num=19:self signed certificate in certificate chain

Openssl no acepta el certificado de CA raíz, aunque se encuentra de forma predeterminada en el almacén de confianza del servidor Ubuntu.

Específicamente: AddTrustExternalCARoot.crtrecibido por correo electrónico de COMODO y /etc/ssl/certs/AddTrust_External_Root.pemcuyos enlaces /usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt son idénticos.

¿Que esta mal aquí?

Respuesta1

OpenSSL al menos hasta la actual (1.0.2a) tiene unabichodonde s_clientsin -CA{path,file}argumentoen realidad no utiliza el almacén de confianza predeterminadocomo debería y, por lo tanto, no puede verificar los certificados que sean válidos según ese almacén de confianza. (También s_servery s_time, pero es poco común preocuparse por la verificación en ellos).https://serverfault.com/questions/607233/how-to-make-openssl-s-client-using-default-ca. Se anuncia una solución en desarrollo, pero es posible que tarde algún tiempo en publicarse y distribuirse. Mientras tanto, debe especificar explícitamente los -CA*argumentos. Tenga en cuenta que openssl verifyno tiene este error y, por lo tanto, informó correctamente el certificado/cadena como válido.

ACTUALIZACIONES26/08/2015:la solución fue lanzada12/06/2015 en 1.0.1o y 1.0.2c. Además, mientras investigaba algo más descubrí queEs posible que los paquetes de RedHat hayan estado bien. Más específicamente, el RPM de origen de CentOS, que openssl-1.0.1e-30.el6.11según tengo entendido es una copia del de RedHat (pero no puedo confirmarlo fácilmente), contiene openssl-1.0.1c-default-paths.patchcambios con s_client.c s_server.c s_time.cfecha del 2012/12/06 que parecen equivalentes (aunque no textualmente iguales) al de 2015. /06/12 correcciones ascendentes. Suponiendo que este parche se aplicó en los paquetes RedHat y CentOS, que no puedo volver atrás y verificar fácilmente, habrían funcionado como se esperaba.

Respuesta2

Recientemente me enfrenté a un problema similar con los certificados de Comodo cuando desarrollaba un script con Ruby. Al final fue que OpenSSL no lo tenía en la tienda, aunque parecía que sí.

Para probar esto, descargue todos los certificados intermedios de Comodo y cree un paquete de certificados similar a este (deberá usar diferentes nombres de certificados según lo que haya descargado):

cat EssentialSSLCA_2.crt ComodoUTNSGCCA.crt UTNAddTrustSGCCA.crt AddTrustExternalCARoot.crt > yourDomain.ca-bundle

Comodo tiene un artículo sobre cómo hacer esto.

Una vez hecho esto, intente verificar el certificado nuevamente usando OpenSSL y especificando el almacén de certificados en la línea de comando:

openssl verify -untrusted yourDomain.ca-bundle cert.pem

Ese ejemplo fue adaptado deeste artículo de StackExchange sobre Unix y Linux.

Una vez que haya determinado qué certificado es, debería ser posible agregar el certificado al almacén de certificados local.que se detalla aquí para Ubuntu, y es algo como:

Cree un directorio para certificados de CA adicionales en /usr/share/ca-certificates

sudo mkdir /usr/share/ca-certificates/extra

Copie el archivo '.crt' al directorio

sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt

Deje que Ubuntu agregue la ruta del archivo '.crt' relativa a /usr/share/ca-certificates a /etc/ca-certificates.conf

sudo dpkg-reconfigure ca-certificates

Respuesta3

Ya no se confía en el certificado raíz de Comodo; busque en Google "certificado robado de Comodo" si no sabe por qué.

Si bien un certificado de comodo puede ser barato, su valor es mucho menor que su precio: en realidad no tiene valor, la cadena de confianza está rota.

información relacionada