Convalida OCSP - impossibile ottenere il certificato dell'emittente locale


17

Sono nuovo a configurare SSL da zero e ho fatto i miei primi passi. Ho acquistato un certificato SSL da RapidSSL per il mio dominio e ho seguito i passaggi per installare il certificato. In generale il certificato è valido e funziona sul mio server web (nginx v1.4.6 - Ubuntu 14.04.1 LTS), ma se sto provando ad attivare OCSP OCSP ottengo il seguente errore nel mio errore nginx.log:

OCSP_basic_verify () non riuscito (SSL: errore: 27069065: routine OCSP: OCSP_basic_verify: errore di verifica certificato: errore di verifica: impossibile ottenere il certificato emittente locale) durante la richiesta dello stato del certificato, risponditore: gv.symcd.com

L'ho provato anche con questo comando dalla riga di comando:

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

E ho ottenuto lo "stesso" errore come nel mio error.log:

[...] Sessione SSL: Protocollo: Cipher TLSv1.2: ECDHE-RSA-AES256-GCM-SHA384 [...] Ora inizio: 1411583991 Timeout: 300 (sec) Verifica codice di ritorno: 20 (impossibile ottenere localmente certificato emittente)

Ma se scarica il certificato di root GeoTrust e provalo con questo comando:

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

La verifica è ok:

[...] Sessione SSL: Protocollo: Cipher TLSv1.2: ECDHE-RSA-AES256-GCM-SHA384 [...] Ora inizio: 1411583262 Timeout: 300 (sec) Verifica codice di ritorno: 0 (ok)

Quindi in qualche modo il certificato radice GeoTrust non viene trovato / consegnato.

La mia configurazione del sito 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 ha scritto nella sua documentazione che avrei dovuto aggiungere i seguenti certificati in ssl.crt con il seguente ordine:

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

Così ho fatto...

In questo momento non ho idea di cosa sto facendo di sbagliato ... speriamo che qualcuno qui possa aiutarmi.

Grazie!

Risposte:


17

Questi due errori non erano correlati sebbene il messaggio di errore fosse lo stesso.

[...] Sessione SSL: Protocollo: Cipher TLSv1.2: ECDHE-RSA-AES256-GCM-SHA384 [...] Ora inizio: 1411583991 Timeout: 300 (sec) Verifica codice di ritorno: 20 (impossibile ottenere localmente certificato emittente)

È stato emesso l'errore precedente comando openssl_client . Come spiegato da Florian Heigl, viene visualizzato questo errore perché openssl_client necessita della certificazione Globalsign Root /etc/ssl/certs.


OCSP_basic_verify () non riuscito (SSL: errore: 27069065: routine OCSP: OCSP_basic_verify: errore di verifica certificato: errore di verifica: impossibile ottenere il certificato emittente locale) durante la richiesta dello stato del certificato, risponditore: gv.symcd.com

Per questo errore, è stato emesso dalla routine ocsp di nginx , specialmente quando si aggiunge la ssl_stapling_verify on;riga in nginx.conf.

Ecco alcuni estratti dalla documentazione di ssl_stapling_verifyper spiegare perché genera l'errore

Sintassi: ssl_stapling_verify su | off;

Abilita o disabilita la verifica delle risposte OCSP da parte del server.

Affinché la verifica funzioni, il certificato dell'emittente del certificato del server, il certificato radice e tutti i certificati intermedi devono essere configurati come attendibili utilizzando la direttiva ssl_trusted_certificate.

In altre parole, è necessario fornire (2) Bundle CA intermedio (RapidSSL SHA256 CA - G3) e (3) Bundle CA intermedio (GeoTrust Global CA) alla ssl_trusted_certificatedirettiva.

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

e aggiungi ocsp-chain.crtalla ssl_trusted_certificatedirettiva.


Grazie mille! Ho provato anche questo, ma l'ho sempre provato con il comando cli.
Kapale,

Dove otteniamo i certificati intermedi?
ingo

1

Posso solo rispondere a una parte di questo.

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

avrebbe bisogno del certificato radice Globalsign in / etc / ssl / certs. Esiste un pacchetto di certificati ca, ce l'hai installato?


Non capisco perché usare Globalsign Root cert quando si ha a che fare con RapidSSL e GeoTrust ?? sono diversi da Globalsign ... correggimi se mi sbagliavo!
Sito digitale del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.