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 ssl.crt avec l'ordre suivant:
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!
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 dans /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 nginx ocsp , en particulier lorsque vous ajoutez ssl_stapling_verify on;
ligne dans nginx.conf.
Voici un extrait de la documentation of ssl_stapling_verify
pour 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) à ssl_trusted_certificate
directive.
cat GeoTrustGlobalCA.crt rapidsslG3.crt > ocsp-chain.crt
et ajouter ocsp-chain.crt
à ssl_trusted_certificate
directive.
Je ne peux que répondre à une partie de cela.
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é?