Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui, on va voir comment configurer l’OCSP Stapling sur NGINX. On utilisera les certificats de Let’s Encrypt pour l’exemple pour que ça s’applique au plus de monde possible.
L’OCSP Stapling :
OCSP est un protocole Internet permettant de vérifier la validité d’un certificat numérique TLS en temps réel auprès de l’autorité ayant émis le certificat.
L’agrafage OCSP (en anglais : OCSP Stapling), dont le nom technique est Extension de requête d’état de certificat TLS (TLS Certificate Status Request Extension), est une approche alternative au protocole OCSP permettant de vérifier l’état de révocation d’un certificat numérique X.509.
Il permet au possesseur d’un certificat de supporter le coût de vérification de ce dernier en fournissant une réponse OCSP horodatée et signée par l’Autorité de certification (CA), attachée (agrafée) à l’échange initial TLS, permettant d’économiser au client TLS la vérification auprès de la CA.
Mise en place de l’OCSP Stapling sur NGINX :
Dans un premier temps, on va télécharger tous les certificats que Let’s Encrypt utilise pour signer les certificats qu’il délivre.
Let’s Encrypt utilise uniquement Let’s Encrypt Authority X3 pour signer les certificats et garde Let’s Encrypt Authority X4 en cas de problèmes. X1 et X2 ne sont plus utilisés.
J’intègre donc X3 et X4 dans mon fichier pour l’avenir, mais vous pouvez simplement télécharger X3.
On va concaténer tout ça dans un beau petit fichier pour l’ocsp stapling :
cd /etc/ssl/private rm -f ocsp-certs.pem && wget -O- https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem | tee -a ocsp-certs.pem > /dev/null
Maintenant, ouvrez votre fichier de configuration principal de NGINX :
nano /etc/nginx/nginx.conf
Et ajoutez ceci :
##OCSP settings ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/ssl/private/ocsp-certs.pem; resolver 8.8.4.4 8.8.8.8 valid=300s; resolver_timeout 5s;
Vous pouvez aussi télécharger une configuration complète sur mon GitHub : https://github.com/stylersnico/nginx-secure-config
Redémarrez NGINX :
service nginx restart
Et testez le bon fonctionnement de l’OCSP Stapling avec la commande suivante :
echo QUIT | openssl s_client -connect www.domain.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'
Le résultat chez moi :
echo QUIT | openssl s_client -connect www.abyssproject.net:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update' OCSP response: ====================================== OCSP Response Data: OCSP Response Status: successful (0x0) Response Type: Basic OCSP Response Version: 1 (0x0) Responder Id: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 Produced At: Aug 23 06:13:00 2016 GMT Responses: Certificate ID: Hash Algorithm: sha1 Issuer Name Hash: 7EE66AE7729AB3FCF8A220646C16A12D6071085D Issuer Key Hash: A84A6A63047DDDBAE6D139B7A64565EFF3A8ECA1 Serial Number: 031F703B6641D1B38D7EBD215B9774E737E1 Cert Status: good This Update: Aug 23 06:00:00 2016 GMT Next Update: Aug 30 06:00:00 2016 GMT
Et sur SSLLabs 🙂
Problème, réglé , mon serveur était en dhcp !!!!! , je l’ai passé en ip static et c’est ok …
Salut et merci pour l’article, cependant je rencontre un probleme, lorsque je redémarre mon serveur (nextcloud) , OCSP Stapling ne fonctionne pas ,, il faut que je face un service nginx reload ou restart , pour que ça fonctionne , Une idée a me proposé ?
merci
Merci pour ce tuto. Petite question : les DNS de Google dans le fichier de nginx.conf, c’est par comodité ? On peut mettre son propre DNS?
Bonjour Genma,
J’ai mis les DNS de Google parce que c’est les plus rapides un peu partout dans le monde et qu’il n’y a pas de problématiques de vie privée pour une validation ocsp.
Mais tu peux mettre les DNS de fDN 🙂