Validation OCSP - impossible d'obtenir le certificat d'émetteur local

17

Je suis nouveau pour configurer SSL à partir de zéro et j'ai fait mes premiers pas. J'ai acheté un certificat SSL auprès de RapidSSL pour mon domaine et j'ai suivi les étapes pour installer le certificat. En général, le certificat est valide et fonctionne sur mon serveur Web (nginx v1.4.6 - Ubuntu 14.04.1 LTS), mais si j'essaie d'activer OCSP OCSP, j'obtiens l'erreur suivante dans mon nginx error.log:

OCSP_basic_verify () a échoué (SSL: erreur: 27069065: routines OCSP: OCSP_basic_verify: erreur de vérification de certificat: erreur de vérification: impossible d'obtenir le certificat d'émetteur local) lors de la demande d'état du certificat, répondeur: gv.symcd.com

Je l'ai également essayé avec cette commande depuis la ligne de commande:

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

Et obtenu la "même" erreur comme dans mon error.log:

[...] Session SSL: Protocole: TLSv1.2 Chiffre: ECDHE-RSA-AES256-GCM-SHA384 [...] Heure de début: 1411583991 Délai d'expiration: 300 (sec) Vérifiez le code retour: 20 (impossible d'obtenir le local certificat d'émetteur)

Mais si vous téléchargez le certificat racine GeoTrust et essayez-le avec cette commande:

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

La vérification est correcte:

[...] Session SSL: Protocole: TLSv1.2 Chiffre: ECDHE-RSA-AES256-GCM-SHA384 [...] Heure de début: 1411583262 Délai d'expiration: 300 (sec) Vérifiez le code retour: 0 (ok)

Donc, en quelque sorte, le certificat racine GeoTrust n'est pas trouvé / livré.

Ma configuration 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";[...]};

RapidSSL a écrit dans sa documentation que je devrais ajouter les certificats suivants dans le ssl.crt avec l'ordre suivant:

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

Alors j'ai fait ...

Pour l'instant, je n'ai aucune idée de ce que je fais mal ... j'espère que n'importe qui ici peut m'aider.

Je vous remercie!

kapale
la source

Réponses:

17

Ces deux erreurs n'étaient pas liées bien que le message d'erreur soit le même.

[...] Session SSL: Protocole: TLSv1.2 Chiffre: ECDHE-RSA-AES256-GCM-SHA384 [...] Heure de début: 1411583991 Délai d'expiration: 300 (sec) Vérifiez le code retour: 20 (impossible d'obtenir le local certificat d'émetteur)

L'erreur ci-dessus a été émise commande openssl_client . Comme expliqué par Florian Heigl, vous obtenez cette erreur car openssl_client a besoin du certificat racine Globalsign /etc/ssl/certs.


OCSP_basic_verify () a échoué (SSL: erreur: 27069065: routines OCSP: OCSP_basic_verify: erreur de vérification de certificat: erreur de vérification: impossible d'obtenir le certificat d'émetteur local) lors de la demande d'état du certificat, répondeur: gv.symcd.com

Pour cette erreur, elle a été émise par la routine nspx ocsp , en particulier lorsque vous ajoutez une ssl_stapling_verify on;ligne dans nginx.conf.

Voici un extrait de la documentation de ssl_stapling_verifypour expliquer pourquoi il renvoie l'erreur

Syntaxe: ssl_stapling_verify sur | de;

Active ou désactive la vérification des réponses OCSP par le serveur.

Pour que la vérification fonctionne, le certificat de l'émetteur du certificat du serveur, le certificat racine et tous les certificats intermédiaires doivent être configurés comme approuvés à l'aide de la directive ssl_trusted_certificate.

En d'autres termes, vous devez fournir (2) Bundle CA intermédiaire (RapidSSL SHA256 CA - G3) et (3) Bundle CA intermédiaire (GeoTrust Global CA) à la ssl_trusted_certificatedirective.

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

et ajouter ocsp-chain.crtà la ssl_trusted_certificatedirective.

masegaloeh
la source
Merci beaucoup! J'ai également essayé cela, mais je l'ai toujours testé avec la commande cli.
kapale
Où obtient-on les certificats intermédiaires?
ingo
1

Je ne peux répondre qu'en partie.

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

aurait besoin du certificat racine Globalsign dans / etc / ssl / certs. Il existe un paquet de certificats CA, l'avez-vous installé?

Florian Heigl
la source
Je ne comprends pas pourquoi utiliser le certificat Globalsign Root pour traiter RapidSSL et GeoTrust ?? ils sont différents de Globalsign ... corrigez-moi si je me trompais!
Site numérique