Accélérer votre réponse SSL/TLS avec l’OCSP Stapling

Accélérer votre réponse SSL/TLS avec l’OCSP Stapling

Date de publication : 15 février 2016

Le monde du web regorge de vieilles rengaines, et « HTTPS c’est lent » en est une des plus persistantes … S’il est vrai que la négociation TLS ajoute un aller-retour à la connexion initiale, les navigateurs récents utilisent de nombreuses techniques pour accélérer cela : HTTP/2 permet des flux multiples dans la même connexion, Les tickets de session SSL évitent la renégociation dès la 2e connexion, et l’OCSP Stapling permet de ne pas avoir à vérifier l’état d’un certificat auprès de l’autorité.

OCSP Stapling Kézako ? C’est aussi ce que l’on appelle l’agrafage OCSP.

Qu’est ce qu’OCSP ?

OCSP est un protocole que tous les navigateurs récents parlent, qui permet de demander directement à une autorité de certification si un certificat TLS donné est toujours valide. Cela a 2 impacts négatifs :

  • Il faut faire une connexion HTTP supplémentaire vers l’autorité de certification pour vérifier le certificat du site, ajoutant de la latence, et risquant de bloquer la connexion inutilement si le serveur OCSP ne répond pas
  • Cela dit à l’autorité de certification que vous visitez ce site, ce qui est une fuite d’information qui peut être dommageable en terme de vie privée.

Si vous regardez les détails d’un certificat TLS, vous trouverez l’URL permettant de valider ce dernier via OCSP :

URL de validation OCSP

Pour permettre cette validation sans en avoir les impacts négatifs, l’agrafage OCSP autorise au serveur HTTPS de fournir directement une réponse OCSP (pas expirée) lors de la néociation TLS. Ainsi le client reçoit de force une réponse OCSP (signée par l’autorité de certification, donc non falsifiable) poussée par le serveur, si le client supporte l’extension TLS « Certificate Status Request ».

Mon serveur web sait-il faire de l’agrafage OCSP ?

Les serveurs web Apache à partir de la version 2.3.3 et Nginx  à partir de la 1.3.7 savent faire de l’OCSP stapling.

Pour cela, il faut configurer votre serveur, soit au niveau global (nginx.conf / apache2.conf) soit au niveau d’un hôte virtuel SSL si vous souhaitez des configurations différentes.

Avant tout : disposer du fichier des CA.

Si vous souhaitez configurer l’OCSP Stapling, il faut que votre serveur web dispose d’un fichier contenant l’autorité de certification de votre serveur. Pour cela, sous Debian, installez le paquet ca-certificates. Il vous créera un fichier /etc/ssl/certs/ca-certificates.crt qui contient toutes les autorités de certification reconnues valides par le CA/Browser Forum.

Configuration de OCSP Stapling sur NGINX

sur Nginx, modifiez le bloc « http » de votre fichier /etc/nginx/nginx.conf comme suit :

Vérifiez votre configuration nginx avec nginx service configtest puis rechargez là avec service nginx reload

Configuration de OCSP Stapling sur Apache

sur Apache, modifiez le fichier apache2.conf (ou mieux /etc/apache2/mods-enabled/ssl.conf ) pour intégrer la configuration suivante :

Rechargez ensuite la configuration avec service apache2 reload

Constater qu’OCSP Stapling est activé

Le plus simple pour vérifier si OCSP Stapling est activé est de tester votre site avec SSLLabs. C’est aussi l’occasion de vérifier que vous avez bien retenus uniquement les bons algorithmes cryptographiques (et donc obtenu un A, nécessaire pour prétendre à une bonne sécurisation).

Vérification OCSP via SSLLabs