Validação OCSP - impossível obter certificado de emissor local

17

Sou novo na configuração do SSL desde o início e fiz meus primeiros passos. Eu comprei um certificado SSL do RapidSSL para o meu domínio e segui as etapas para instalar o certificado. Em geral, o certificado é válido e funciona no meu servidor (nginx v1.4.6 - Ubuntu 14.04.1 LTS), mas se eu estou tentando ativar o OCSP OCSP, recebo o seguinte erro no meu nginx error.log:

OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: gv.symcd.com

Eu tentei também com este comando a partir da linha de comando:

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

E recebi o erro "same" como no meu error.log:

[...]SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 [...] Start Time: 1411583991 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate)

Mas se você fizer o download do GeoTrust Root Certificat e experimentá-lo com este comando:

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

A verificação está correta:

[...]SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 [...] Start Time: 1411583262 Timeout : 300 (sec) Verify return code: 0 (ok)

Então, de alguma forma, o Certificado Raiz GeoTrust não é encontrado / entregue.

Minha configuração do site 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 escreveu em sua documentação que eu deveria adicionar os seguintes certificados no ssl.crt com a seguinte ordem:

  1. myserver.crt
  2. Pacote CA intermediário (RapidSSL SHA256 CA - G3)
  3. Pacote CA intermediário (GeoTrust Global CA)

Então eu fiz ...

Agora eu não tenho ideia do que estou fazendo de errado ... espero que alguém aqui possa me ajudar.

Obrigado!

    
por kapale 24.09.2014 / 20:57

2 respostas

17

Esses dois erros não estavam relacionados, embora a mensagem de erro fosse a mesma.

[...]SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 [...] Start Time: 1411583991 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate)

Acima do erro foi emitido o comando openssl_client . Como explicado por Florian Heigl, você obtém esse erro porque o openssl_client precisa do certificado Raiz Globalsign em /etc/ssl/certs .

OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: gv.symcd.com

Para este erro, foi emitido por rotina ocgin nginx , especialmente quando você adiciona ssl_stapling_verify on; line em nginx.conf.

Veja aqui um trecho da documentação de ssl_stapling_verify para explicar por que ele gera o erro

Syntax: ssl_stapling_verify on | off;

Enables or disables verification of OCSP responses by the server.

For verification to work, the certificate of the server certificate issuer, the root certificate, and all intermediate certificates should be configured as trusted using the ssl_trusted_certificate directive.

Em outras palavras, você precisa fornecer (2) Pacote intermediário CA (RapidSSL SHA256 CA - G3) e (3) Pacote intermediário CA (GeoTrust Global CA) para ssl_trusted_certificate directiva.

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

e adicione a diretiva ocsp-chain.crt to ssl_trusted_certificate .

    
por 25.09.2014 / 02:14
1

Eu só posso responder parte disso.

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

precisaria do certificado Globalsign Root em / etc / ssl / certs. Existe um pacote de certificados de ca, você tem isso instalado?

    
por 24.09.2014 / 21:03