Validación OCSP: no se puede obtener el certificado de emisor local


17

Soy nuevo en la configuración de SSL desde cero e hice mis primeros pasos. Compré un certificado SSL de RapidSSL para mi dominio y seguí los pasos para instalar el certificado. En general, el certificado es válido y funciona en mi servidor web (nginx v1.4.6 - Ubuntu 14.04.1 LTS), pero si intento activar OCSP OCSP obtengo el siguiente error en mi nginx error.log:

OCSP_basic_verify () falló (SSL: error: 27069065: rutinas OCSP: OCSP_basic_verify: error de verificación del certificado: Error de verificación: no se puede obtener el certificado del emisor local) al solicitar el estado del certificado, respondedor: gv.symcd.com

Lo probé también con este comando desde la línea de comandos:

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

Y obtuve el "mismo" error como en mi error.log:

[...] SSL-Session: Protocolo: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de inicio: 1411583991 Tiempo de espera: 300 (seg) Verificar código de retorno: 20 (no se puede obtener local) certificado de emisor)

Pero si descarga el GeoTrust Root Certificat y lo prueba con este comando:

openssl s_client -connect mydomain.tld: 443 -CAfile GeoTrust_Global_CA.pem 2> & 1 </ dev / null

La verificación está bien:

[...] SSL-Session: Protocolo: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de inicio: 1411583262 Tiempo de espera: 300 (seg) Verificar código de retorno: 0 (ok)

Entonces, de alguna manera, el certificado raíz de GeoTrust no se encuentra / entrega.

Mi configuración del sitio nginx:

server {
    listen 443;
    server_name mydomain.tld;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;


    # Resumption
    ssl_session_cache shared:SSL:20m;

    # Timeout
    ssl_session_timeout 10m;

    # Security options
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

    # OCSP Stapling
    # It means that you sent status info about your certificate along with the request,
    # instead of making the browser check the certificate with the Certificate Authority.
    # This removes a large portion of the SSL overhead, the CloudFlare post above explains it in more detail.
    ssl_stapling on;
    ssl_stapling_verify on;
    #ssl_trusted_certificate /etc/ssl/certs/ssl.pem;

    #resolver 8.8.8.8 8.8.4.4 valid=300s;
    #resolver_timeout 10s;

    # This forces every request after this one to be over HTTPS
    add_header Strict-Transport-Security "max-age=31536000";[...]};

RapidSSL escribió en su documentación que debería agregar los siguientes certificados al ssl.crt con el siguiente orden:

  1. myserver.crt
  2. Paquete intermedio de CA (RapidSSL SHA256 CA - G3)
  3. Paquete intermedio de CA (GeoTrust Global CA)

Así que lo hice...

En este momento no tengo idea de lo que estoy haciendo mal ... espero que alguien aquí pueda ayudarme.

¡Gracias!

Respuestas:


17

Esos dos errores no estaban relacionados, aunque el mensaje de error era el mismo.

[...] SSL-Session: Protocolo: TLSv1.2 Cipher: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de inicio: 1411583991 Tiempo de espera: 300 (seg) Verificar código de retorno: 20 (no se puede obtener local) certificado de emisor)

El error anterior se emitió con el comando openssl_client . Como lo explicó Florian Heigl, obtiene este error porque el openssl_client necesita el certificado de raíz de Globalsign /etc/ssl/certs.


OCSP_basic_verify () falló (SSL: error: 27069065: rutinas OCSP: OCSP_basic_verify: error de verificación del certificado: Error de verificación: no se puede obtener el certificado del emisor local) al solicitar el estado del certificado, respondedor: gv.symcd.com

Para este error, fue emitido por la rutina nginx ocsp , especialmente cuando agrega ssl_stapling_verify on;línea en nginx.conf.

Aquí un extracto de la documentación de ssl_stapling_verifypara explicar por qué arroja el error

Sintaxis: ssl_stapling_verify en | apagado;

Habilita o deshabilita la verificación de respuestas OCSP por parte del servidor.

Para que la verificación funcione, el certificado del emisor del certificado del servidor, el certificado raíz y todos los certificados intermedios deben configurarse como confiables utilizando la directiva ssl_trusted_certificate.

En otras palabras, debe proporcionar (2) Paquete de CA intermedio (RapidSSL SHA256 CA - G3) y (3) Paquete de CA intermedio (GeoTrust Global CA) a la ssl_trusted_certificatedirectiva.

cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt

y agregar ocsp-chain.crta la ssl_trusted_certificatedirectiva.


Muchas gracias! Intenté esto también, pero siempre lo probé con el comando cli.
kapale

¿Dónde obtenemos los certificados intermedios?
Ingo

1

Solo puedo responder parte de esto.

openssl s_client -connect mydomain.tld: 443 2> & 1 </ dev / null

necesitaría el certificado raíz de Globalsign en / etc / ssl / certs. Hay un paquete de certificados CA, ¿lo tiene instalado?


No entiendo por qué usar el certificado raíz de Globalsign cuando se trata de RapidSSL y GeoTrust. son diferentes de Globalsign ... ¡corrígeme si me equivoqué!
Sitio digital
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.