Saltar al contenido

seguridad – Error de SSL: no se puede obtener el certificado del emisor local

octubre 18, 2021
apple touch icon@2

Tengo problemas para configurar SSL en un servidor Debian 6.0 de 32 bits. Soy relativamente nuevo con SSL, así que tengan paciencia conmigo. Incluyo toda la información que puedo.
Nota: El verdadero nombre de dominio se ha cambiado para proteger la identidad y la integridad del servidor.

Configuración

El servidor se ejecuta con nginx. Está configurado de la siguiente manera:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

Encadené mi certificado usando el método descrito aquí

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

dónde mysite.ca.crt es el certificado que me ha dado la autoridad firmante, y el bundle.crt es el certificado de CA que también me envió mi autoridad de firma. El problema es que no compré el certificado SSL directamente de GlobalSign, sino a través de mi proveedor de alojamiento, Singlehop.

Pruebas

El certificado se valida correctamente en Safari y Chrome, pero no en Firefox. La búsqueda inicial reveló que puede ser un problema con la CA.

Exploré la respuesta a una pregunta similar, pero no pude encontrar una solución, ya que realmente no entiendo para qué sirve cada certificado.

Usé s_client de openssl para probar la conexión y recibí un resultado que parece indicar el mismo problema que la pregunta similar. El error es el siguiente:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Se puede encontrar un detalle completo de la respuesta de openssl (con certificados e información innecesaria truncada) aquí.

También veo la advertencia:

No client certificate CA names sent

¿Es posible que este sea el problema? ¿Cómo puedo asegurarme de que nginx envíe estos nombres de CA?

Intentos de resolver el problema

Intenté resolver el problema descargando la CA raíz directamente desde GlobalSign, pero recibí el mismo error. Actualicé las CA raíz en mi servidor Debian usando el update-ca-certificates comando, pero nada cambió. Es probable que esto se deba a que la CA enviada por mi proveedor era correcta, por lo que el certificado se encadenó dos veces, lo que no ayuda.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Próximos pasos

Por favor, avíseme si hay algo que pueda probar, o si tengo todo configurado incorrectamente.

close