Validação OCSP - não é possível obter o certificado do emissor local

17

Eu sou novo na configuração do SSL e fiz meus primeiros passos. 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 está funcionando no meu servidor da web (nginx v1.4.6 - Ubuntu 14.04.1 LTS), mas se estou tentando ativar o OCSP OCSP, recebo o seguinte erro no meu nginx error.log:

OCSP_basic_verify () falhou (SSL: erro: 27069065: rotinas OCSP: OCSP_basic_verify: certificate check error: Verifique o erro: não é possível obter o certificado do emissor local) ao solicitar o status do certificado, respondendo: gv.symcd.com

Eu tentei também com este comando na linha de comando:

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

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

[...] Sessão SSL: Protocolo: TLSv1.2 Cifra: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de Início: 1411583991 Tempo limite: 300 (seg) Verifique o código de retorno: 20 (não é possível obter local) certificado de emissor)

Mas se você baixar o GeoTrust Root Certificat e tente com este comando:

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

A verificação está correta:

[...] Sessão SSL: Protocolo: TLSv1.2 Cifra: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de Início: 1411583262 Tempo limite: 300 (seg) Verifique o código de retorno: 0 (ok)

Então, de alguma forma, o certificado raiz GeoTrust não foi encontrado / entregue.

Minha configuração de 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";[...]};

O 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 intermediário de CA (RapidSSL SHA256 CA - G3)
  3. Pacote intermediário de CA (CA global GeoTrust)

Então eu fiz...

No momento, não tenho idéia do que estou fazendo de errado ... espero que alguém aqui possa me ajudar.

Obrigado!

Kapale
fonte

Respostas:

17

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

[...] Sessão SSL: Protocolo: TLSv1.2 Cifra: ECDHE-RSA-AES256-GCM-SHA384 [...] Hora de Início: 1411583991 Tempo limite: 300 (seg) Verifique o código de retorno: 20 (não é possível obter local) certificado de emissor)

O erro acima foi emitido no comando openssl_client . Conforme explicado por Florian Heigl, você recebe esse erro porque o openssl_client precisa do certificado Globalsign Root /etc/ssl/certs.


OCSP_basic_verify () falhou (SSL: erro: 27069065: rotinas OCSP: OCSP_basic_verify: certificate check error: Verifique o erro: não é possível obter o certificado do emissor local) ao solicitar o status do certificado, respondendo: gv.symcd.com

Para esse erro, ele foi emitido pela rotina nginx ocsp , especialmente quando você adiciona ssl_stapling_verify on;linha no nginx.conf.

Aqui há algum trecho da documentação de ssl_stapling_verifyexplicar por que ele lança o erro

Sintaxe: ssl_stapling_verify ativado | fora;

Habilita ou desabilita a verificação das respostas do OCSP pelo servidor.

Para que a verificação funcione, o certificado do emissor do certificado do servidor, o certificado raiz e todos os certificados intermediários devem ser configurados como confiáveis ​​usando a diretiva ssl_trusted_certificate.

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

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

e adicione ocsp-chain.crtà ssl_trusted_certificatediretiva.

masegaloeh
fonte
Muito obrigado! Eu tentei isso também, mas sempre o testava com o comando cli.
kapale
Onde obtemos os certificados intermediários?
Ingo
1

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 ca-certificates, você tem esse instalado?

Florian Heigl
fonte
Não entendo por que usar o certificado Globalsign Root ao lidar com RapidSSL e GeoTrust? eles são diferentes da Globalsign ... me corrija se eu estivesse errado!
Site digital