¿Por qué necesito instalar el certificado intermedio startcom?

7

Emití a mi servidor un certificado de clase 1 de Startcom Sin cambios en el cliente, puedo acceder a este servidor a través de FF sin ningún problema. Sin embargo, cuando se intenta validar el certificado a través de openssl s_client , se ahoga quejándose de certificados faltantes.

Puedo resolver el problema de openssl anterior copiando el certificado "intermedio" de Startcom en /etc/ssl/certs y sincronizando el archivo en el formato <hash>.<iterator> .

Pregunta: ¿Necesito dar este paso? Parece que el certificado raíz de la Startcom ya es de confianza. Además, FF puede completar la cadena de certificados sin problemas. ¿Me estoy perdiendo un paso? ¿Por qué el paquete ca-certificates confía en la raíz y no en el certificado intermedio? ¿Por qué tengo que confiar manualmente en Startcom?

EDITAR: Estoy usando ubuntu 12.04 en este caso.

    
pregunta Dane O'Connor 08.05.2014 - 16:19
fuente

1 respuesta

19

Versión corta:

Firefox está utilizando su propia base de datos de CA que incluye el certificado intermedio necesario de Startcom; OpenSSL usa / etc / ssl en lugar de eso, no tiene ese certificado intermedio. Pero debe solucionar esto en el lado del servidor, no en el lado del cliente.

Versión larga:

La validación del certificado SSL requiere que cada certificado en la cadena sea validado. La cadena comienza en la raíz, finaliza en el certificado del nodo y puede incluir cero o más certificados intermedios.

El software cliente debe tener una lista de raíces confiables. Una raíz está firmada por sí misma y es confiable en virtud del proveedor de software que incluye ese certificado en su almacén de raíces de confianza. En el caso de Firefox, eso es (creo) cert8.db. En el caso de OpenSSL, utiliza la jerarquía / etc / ssl.

El software cliente también puede incluir certificados intermedios en su tienda, también. Sin embargo, no es necesario . Parece que Firefox lo ha hecho para Startcom, pero el árbol de configuración / etc / ssl de Ubuntu no.

Por esta razón, se recomienda que los servidores que utilizan certificados de nodo firmados con un certificado intermedio incluyan todos los certificados intermedios al enviar su certificado a cualquier cliente que se conecte.

Para responder directamente a su pregunta, colocar el intermedio en / etc / ssl solucionará el problema, para usted. No para nadie más navegando por su sitio. Para corregirlo correctamente, debe agregar el certificado intermedio a la cadena que el servidor distribuye. Por ejemplo, con Apache, vea la directiva SSLCertificateChainFile - DigiCert tiene un buen tutorial, y StartCom también tiene instrucciones.

@DanFromGermany pregunta, en los comentarios, si puedo dar una referencia para:

  

mejores prácticas para servidores que utilizan certificados de nodo firmados con un   certificado intermedio para incluir todos los certificados intermedios

De hecho, llamar a eso "mejores prácticas" no es estrictamente cierto, es un requisito. Según RFC 5246 (TLS 1.2) :

  

[La lista de certificados] es una secuencia (cadena) de certificados. los   El certificado del remitente DEBE aparecer primero en la lista. Cada siguiente   El certificado DEBE certificar directamente el que lo precede. Porque   la validación de certificados requiere que las claves raíz sean distribuidas   independientemente, el certificado autofirmado que especifica la raíz   La autoridad de certificación PUEDE ser omitida de la cadena, bajo el   supuesto de que el extremo remoto ya debe poseerlo para poder   Valídalo en cualquier caso.

Por inferencia: cada certificado en la cadena debe certificar directamente el que lo precede, y solo la autoridad de certificado raíz es opcional ("PUEDE omitirse"), luego se requieren todos los certificados intermedios.

Por lo tanto, no es estrictamente cierto decir que incluir todos los productos intermedios son las mejores prácticas; sería más justo decir que no incluir todos los productos intermedios son las peores prácticas, pero sucede, porque las personas son perezosas y porque Funciona lo suficiente del tiempo.

    
respondido por el gowenfawr 08.05.2014 - 17:16
fuente

Lea otras preguntas en las etiquetas