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.

Source

 

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 🙂

ocsp_stapling