Fondo:
- Ubuntu Server 14.10 de 64 bits en aws.amazon.com/ec2
- Certificado de servidor PositiveSSL barato de COMODO
- 1 certificado de servidor, 2 certificados de CA intermedios y 1 certificado de CA raíz como archivo ZIP de COMODO
- Citadel WebSite https
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 alineados correctamente a través de la cadena, pero:
verify error:num=19:self signed certificate in certificate chain
El certificado raíz CA no es aceptado por openssl, aunque se encuentra por defecto en el almacén de confianza del servidor Ubuntu.
Específicamente: AddTrustExternalCARoot.crt
recibido por correo electrónico de COMODO y /etc/ssl/certs/AddTrust_External_Root.pem
que enlaza con /usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt
Son identicos.
¿Que esta mal aquí?
openssl s_client
el html de la página aparece y w3m también muestra la página después quejándose del certificado no confiable. Pero Firefox simplemente no muestra la página, sin ninguna advertencia sobre el certificado.
openssl verify -CAfile chained.crt chained.crt
pasa "OK" (chained.crt es el certificado encadenado con certificado de servidor, certificados intermedios y certificado de CA raíz)! Para mí esto es un comportamiento inconsistente y extraño de openssl. La cadena de certificados es correcta, el último certificado está en el almacén de confianza y openssl lo reconoce como un único certificado y como un archivo de CA, pero no cuando es el último en una cadena. ¿Es esto un error?