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
-
Article de Mozilla sur l’agrafage OCSP - http://en.wikipedia.org/wiki/OCSP_stapling
-
Article de Wikipedia sur l’agrafage OCSP - http://en.wikipedia.org/wiki/OCSP_stapling