¿Cómo arreglas una cadena SSL incompleta?


29

Tengo instalado un certificado SSL Go Daddy, y funciona bien en todas partes, excepto en Android.

https://www.ssllabs.com/ssltest/analyze.html dice que la cadena está incompleta, y leí en el desbordamiento de pila que una cadena SSL en el orden incorrecto fallará en Android.

¿Pero cómo lo pongo en orden? En mi servidor? ¿El certificado SSL en sí mismo necesita ser reingresado? ¿Mover cosas en FTP?

Respuestas:


19

Siguiendo con la respuesta de zakjan, tuve un problema cuando intenté usar jquery para hacer una solicitud AJAX en mi servidor recién seguro, en una vista web de Android. Funcionó en el navegador, pero no en mi aplicación.

Usé este sitio: https://certificatechain.io/

Pegué el texto de mi archivo .crt firmado que recibí de Comodo (positiveSSL), y me devolvió una concatenación de todo lo que necesitaba. Lo guardé como mi dominio + "chain.crt" (ver más abajo)

Luego, en mis configuraciones de apache, ingresé algo como esto para ese host virtual en particular:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Después de eso, la vista web de mi aplicación de Android no tuvo problemas al usar ajax para POST a mi servidor. Lo probé en 2 dispositivos del mundo real, uno con 2.3.4 y otro con 4.algo. Y en el emulador ejecutando 2.3. Todo funcionó.

Espero que esto ayude.


1
La clave para mí fue agregar la SSLCACertificateFiledirectiva y señalarla al archivo CA que me dio mi autoridad. No funcionaría si simplemente concatenara los otros certificados a mi archivo de certificado.
Alex W

En apaches anteriores, se podía usar SSLCertificateChainFile en lugar de SSLCACertificateFile (en caso de que busque esta clave en sus configuraciones y no pueda encontrarla).
dr0i

Increíblemente, pero la respuesta de @Richard está usando el sitio certificatechain.io y el sitio dice "... inspirado en cert-chain-resolver por Jan Žák", quien respondió esta pregunta aquí: superuser.com/a/866523/92500 , gracias @zakjan!
Andrés Morales

La SSLCACertificateFileera de la línea echaba de menos. Inicialmente supuse que mi CA era demasiado nueva porque SSL funcionaba cuando se lo solicitaban algunos navegadores / SO, pero no otros. El uso de decoder.link/sslchecker ayudó a aclarar que mi configuración estaba equivocada, y esta respuesta tenía la solución. ¡¡Gracias!!
josephdpurcell

9

La cadena estaba en un archivo crt, que el SSL original estaba funcionando.

Para GoDaddy hay un segundo certificado: gd_bundle.crt

Copie esta información y agréguela al CRT instalado en el servidor.

Entonces, el CRT original en el servidor tenía 1 certificado, y después tendrá 3 en el mismo archivo. Esta es la cadena.

Todavía tengo ancla en los problemas de la cadena en ssllabs.com pero esto no es un problema, solo una opción para dejarlo dentro o fuera, de acuerdo con /security/24561/ssltest-chain-issues -contains-anchor / 24566 # 24566


2
Para deshacerse de los problemas de la cadena quitar el último certificado de gd_bundle.crt
sanmai

7

Puede resolver el problema de la cadena de certificados incompleta manualmente concatenando todos los certificados del certificado al certificado raíz de confianza (exclusivo, en este orden), para evitar dichos problemas. Tenga en cuenta que el certificado raíz de confianza no debe estar allí, ya que ya está incluido en el almacén de certificados raíz del sistema.

Debería poder obtener certificados intermedios del emisor y reunirlos usted mismo. Por cierto, he escrito un script para automatizar el procedimiento, se necesita un certificado para producir la salida de los certificados correctamente encadenados. https://github.com/zakjan/cert-chain-resolver


Esto suena como una solución que solo "engaña" a la máquina local para que piense que el certificado está configurado correctamente.
Alex W

No Se supone que el paquete de certificados de salida se carga en un servidor, que envía el contenido del sitio web. Cada cliente recibirá el certificado con sus intermedios.
zakjan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.