A+
Cela pourrait être un groupe sanguin, la note de la dette souveraine d’un état, voire même une de mes notes à l’école…
Mais non, il s’agit de la note attribuée à mon site web par le test SSL de Qualys SSL Labs, cette note est aussi volatile que celle de la dette souveraine d’un état étant donné que les exigences en termes de sécurité pour SSL évoluent en fonction des découvertes de failles de sécurité.
Voici l’extrait de configuration Apache qui permet d’obtenir un ‘A’ (à la date de rédaction de cet article):
SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLCertificateFile /var/pki/tls/certs/u03_fr.crt SSLCertificateKeyFile /var/pki/tls/private/u03_fr.key SSLCertificateChainFile /var/pki/tls/certs/root_bundle.crt
Le ‘A+’ est obtenu en ajoutant ‘HSTS – HTTP Strict Transport Security’ comme ceci:
Header set Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"
Ceci fait que l’entête HTTP ‘strict-transport-security‘ est ajouté dans chaque réponse, ce qui force les navigateurs compatibles à utiliser HTTPS (même si votre application ou votre configuration ne forcent pas de redirect).
Cache-Control: no-cache, must-revalidate, max-age=0 Connection: close Content-Type: text/html; charset=UTF-8 Date: Fri, 25 Nov 2016 22:18:18 GMT Expires: Wed, 11 Jan 1984 05:00:00 GMT Server: Apache Transfer-Encoding: chunked strict-transport-security: max-age=31536000; includeSubDomains; preload
On note que si le navigateur fait une première requête en HTTP alors le premier échange n’est pas protégé car c’est seulement après que le navigateur est informé qu’il faut passer en HTTPS. C’est précisément pour éviter ceci qu’on utilise le paramètre ‘preload‘.
Les navigateurs embarquent une liste de domaines pour lesquels HSTS est activé et les accès doivent toujours se faire en HTTPS, y compris la première connexion, tout lien, toute requête en HTTP est convertie en HTTPS. Pour ceci il faut aller sur le site https://hstspreload.appspot.com/ et demander l’inclusion du domaine dans la liste. Le site vérifie que votre serveur est correctement paramétré et que le champ ‘preload‘ est bien envoyé dans les entêtes de réponse (il s’agit là d’une mesure pour éviter que quelqu’un vous inscrive à l’insu de votre plein gré).
Attention toutefois: ne mettez ‘preload‘ et ne demandez l’inclusion de votre domaine dans la liste que si vous êtes certain que tous les sites de votre domaine et de ses sous-domaines fonctionnent correctement en HTTPS. Sinon les sites qui ne fonctionnent pas en HTTPS seront inaccessibles jusqu’à ce que vous les rendiez compatibles. A noter que HSTS implique que votre certificat SSL soit valide, un certificat invalide ou expiré rend votre site inaccessible (même en mettant une exception de sécurité).
HSTS avec ‘preload’ vous permet de vous prémunir contre les attaques de type man-in-the-middle.
Notez également que Apache et openSSL doivent être à jour, pour éviter que d’éventuelles failles soient présentes sur votre serveur, ou que votre serveur présente des algorithmes de chiffrement et de hachage obsolètes.