Comment configurer l’agrafage OCSP sur Apache et Nginx

introduction

L’agrafage OCSP est une extension TLS / SSL qui vise à améliorer les performances de la négociation SSL tout en préservant la confidentialité des visiteurs. Avant de poursuivre la configuration, une brève présentation du fonctionnement de la révocation de certificats. Cet article utilise les certificats free émis par StartSSL à démontrer.

Ce tutoriel utilisera la configuration de base pour Apache et Nginx décrite ci-dessous:

À propos d’OCSP

OCSP (protocole de statut de certificat en ligne) est un protocole permettant de vérifier si un certificat SSL a été révoqué. Elle a été créée pour remplacer la liste de révocation de certificats afin de réduire le temps de négociation SSL. Avec la liste de révocation de certificats (Certificate Revocation List), le navigateur télécharge une liste des numéros de série du certificat révoqué et vérifie le certificat actuel, ce qui augmente le temps de négociation SSL. Dans OCSP, le navigateur envoie une demande à une URL OCSP et reçoit une réponse contenant le statut de validité du certificat. La capture d’écran suivante montre l’URI OCSP de digitalocean.com.

image: https: //assets.digitalocean.com/articles/OCSP_Stapling/1.png [URI OCSP]

À propos de l’agrafage OCSP

OCSP présente deux problèmes majeurs: la confidentialité et une charge de travail importante sur les serveurs de CA.

Comme OCSP demande au navigateur de contacter l’autorité de certification pour confirmer la validité du certificat, la confidentialité est compromise. Le CA sait quel site Web est utilisé et qui y a accédé.

Si un site Web HTTPS reçoit beaucoup de visiteurs, le serveur OCSP de l’AC doit gérer toutes les demandes OCSP formulées par les visiteurs.

Lorsque l’agrafage OCSP est mis en œuvre, le détenteur du certificat (serveur Web en lecture) interroge le serveur OCSP lui-même et met en cache la réponse. Cette réponse est «agrafée» avec la liaison TLS / SSL via la réponse d’extension * Certificate Status Request *. Par conséquent, les serveurs de l’AC ne sont pas encombrés de demandes et les navigateurs n’ont plus besoin de divulguer les habitudes de navigation des utilisateurs à des tiers.

Vérifier la prise en charge de l’agrafage OCSP

L’agrafage OCSP est pris en charge sur

  • Serveur HTTP Apache (> = 2.3.3)

  • Nginx (> = 1.3.7)

Veuillez vérifier la version de votre installation avec les commandes suivantes avant de continuer.

Apache:

apache2 -v

Nginx:

nginx -v

Les utilisateurs de CentOS / Fedora remplacent + apache2 + par + httpd +.

Récupérer le bundle CA

Récupérez l’autorité de certification racine et intermédiaire au format PEM et enregistrez-les dans un fichier unique. Ceci concerne les certificats de l’autorité de certification racine et intermédiaire de StartSSL.

cd /etc/ssl
wget -O - https://www.startssl.com/certs/ca.pem https://www.startssl.com/certs/sub.class1.server.ca.pem | tee -a ca-certs.pem> /dev/null

Si votre autorité de certification fournit des certificats au format DER, convertissez-les en PEM. Par exemple, DigiCert fournit des certificats au format DER. Pour les télécharger et les convertir en PEM, utilisez les commandes suivantes:

cd /etc/ssl
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null
wget -O - https://www.digicert.com/CACerts/DigiCertHighAssuranceEVCA-1.crt | openssl x509 -inform DER -outform PEM | tee -a ca-certs.pem> /dev/null

Les deux ensembles de commandes utilisent + tee + pour écrire dans le fichier. Vous pouvez donc utiliser + sudo tee + si vous êtes connecté en tant qu’utilisateur non root.

Configuration de l’agrafage OCSP sur Apache

Editez le fichier hôtes virtuels SSL et placez ces lignes * dans * la directive + <VirtualHost> </ VirtualHost> +.

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLCACertificateFile /etc/ssl/ca-certs.pem
SSLUseStapling on

Un emplacement de cache doit être spécifié * en dehors de * + <VirtualHost> </ VirtualHost> +.

sudo nano /etc/apache2/sites-enabled/example.com-ssl.conf
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

Si vous avez suivi https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-apache-on-ubuntu-12-04 article] pour configurer des sites SSL sur Apache, le fichier d’hôte virtuel va ressembler à ceci:

+ / etc / apache2 / sites-enabled / example.com-ssl.conf +

<IfModule mod_ssl.c>
   SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
   <VirtualHost *:443>

           ServerAdmin webmaster@localhost
           ServerName example.com
           DocumentRoot /var/www

           SSLEngine on

           SSLCertificateFile /etc/apache2/ssl/example.com/apache.crt
           SSLCertificateKeyFile /etc/apache2/ssl/example.com/apache.key

           SSLCACertificateFile /etc/ssl/ca-certs.pem
           SSLUseStapling on
   </VirtualHost>
</IfModule>

Faites un + configtest + pour vérifier les erreurs.

apachectl -t

Recharger si + Syntaxe OK + est affiché.

service apache2 reload

Accédez au site Web sur IE (sous Vista et supérieur) ou sur Firefox 26+ et consultez le journal des erreurs.

tail /var/log/apache2/error.log

Si le fichier défini dans la directive + SSLCACertificateFile + est manquant, un certificat d’erreur similaire à celui-ci s’affiche.

[Fri May 09 23:36:44.055900 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02217: ssl_stapling_init_cert: Can't retrieve issuer certificate!
[Fri May 09 23:36:44.056018 2014] [ssl:error] [pid 1491:tid 139921007208320] AH02235: Unable to configure server certificate for stapling

Si aucune erreur de ce type ne s’affiche, passez à l’étape finale.

Configuration de l’agrafage OCSP sur Nginx

Editez le fichier hôtes virtuels SSL et placez les directives suivantes dans la section + server {} +.

sudo nano /etc/nginx/sites-enabled/example.com.ssl
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

Si vous avez suivi https://www.digitalocean.com/community/articles/how-to-set-up-multiple-ssl-certificates-on-one-ip-with-nginx-on-ubuntu-12-04 article] pour configurer des hôtes SSL sur Nginx, le fichier d’hôte virtuel complet se présentera comme suit:

+ / etc / nginx / sites-enabled / example.com.ssl +

server {

       listen   443;
       server_name example.org;

       root /usr/share/nginx/www;
       index index.html index.htm;

       ssl on;
       ssl_certificate /etc/nginx/ssl/example.org/server.crt;
       ssl_certificate_key /etc/nginx/ssl/example.org/server.key;

       ssl_stapling on;
       ssl_stapling_verify on;
       ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;
}

Faites un + configtest + pour voir si tout est correct.

service nginx configtest

Rechargez ensuite le service + nginx.

service nginx reload

Accédez au site Web sur IE (sous Vista et supérieur) ou sur Firefox 26+ et consultez le journal des erreurs.

tail /var/log/nginx/error.log

Si le fichier défini dans + ssl_trusted_certificate + manque un certificat, une erreur similaire à celle-ci s’affiche:

2014/05/09 17:38:16 [error] 1580#0: OCSP_basic_verify() failed (SSL: error:27069065:OCSP routines:OCSP_basic_verify:certificate verify error:Verify error:unable to get local issuer certificate) while requesting certificate status, responder: ocsp.startssl.com

Si aucune de ces erreurs ne s’affiche, passez à l’étape suivante.

Test d’agrafage OCSP

Deux méthodes seront expliquées pour tester si l’agrafage OCSP fonctionne: l’outil de ligne de commande + openssl + et le test SSL de Qualys.

La commande OpenSSL

La sortie de cette commande affiche une section indiquant si votre serveur Web a répondu avec des données OCSP. Nous + grep + cette section particulière et d’afficher.

echo QUIT | openssl s_client -connect www.digitalocean.com:443 -status 2> /dev/null | grep -A 17 'OCSP response:' | grep -B 17 'Next Update'

Remplacez + www.digitalocean.com + par votre nom de domaine. Si l’agrafage OCSP fonctionne correctement, la sortie suivante est affichée.

OCSP response:
======================================
OCSP Response Data:
   OCSP Response Status: successful (0x0)
   Response Type: Basic OCSP Response
   Version: 1 (0x0)
   Responder Id: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
   Produced At: May  9 08:45:00 2014 GMT
   Responses:
   Certificate ID:
     Hash Algorithm: sha1
     Issuer Name Hash: B8A299F09D061DD5C1588F76CC89FF57092B94DD
     Issuer Key Hash: 4C58CB25F0414F52F428C881439BA6A8A0E692E5
     Serial Number: 0161FF00CCBFF6C07D2D3BB4D8340A23
   Cert Status: good
   This Update: May  9 08:45:00 2014 GMT
   Next Update: May 16 09:00:00 2014 GMT

Aucune sortie n’est affichée si l’agrafage OCSP ne fonctionne pas.

Test SSL Qualys en ligne

Pour vérifier cela en ligne, allez à ce site Web et entrez votre nom de domaine. Une fois le test terminé, vérifiez dans la section * Détails du protocole *.

image: https: //assets.digitalocean.com/articles/OCSP_Stapling/2.png [Rapport SSL de Qualys]

Lecture additionnelle