Rouler en classe A avec Apache
Cet article est en miroir par rapport à l’article sur Nginx : apprenons à avoir de bonnes notes avec Mozilla Observatory et SSLLabs.
On va bien sûr partir du site SSL Configuration Generator, la référence. Il vous suffit de choisir votre serveur Web, la version que vous utilisez et la version d’openssl et le tour est joué.
A partir de là, on va ajouter les headers pour faire plaisir à Mozilla et les exigences de sécurité TLS pour faire plaisir à SSLLabs.
Comment être un bon élève chez Mozilla ?
Commençons par définir les paramètres SSL du virtualHost (/etc/apache2/sites-enabled/mon-site-en-tls.conf) :
# HSTS permet de déclarer au client directement dans la réponse HTTP qu'il faut communiquer en HTTPS # Cette en-tête permet d'éviter le vol de cookies et le downgrade SSL SSLEngine on SSLCertificateFile /etc/letsencrypt/certificate.pem SSLCertificateChainFile /etc/letsencrypt/chain.pem SSLCertificateKeyFile /etc/letsencrypt/privkey.pem SSLDHParametersFile /etc/ssl/RENATER/dhparams.pem Header set Strict-Transport-Security "max-age=63072000; includeSubdomains;"
Etre un bon élève n’est pas possible par défaut avec Apache, il faut d’abord activer le module headers pour jouer avec les en-têtes (comme le nom l’indique).
a2enmod headers ssl
A partir de là, ajoutons les en-têtes qui protègent les visiteurs dans /etc/apache2/mods-enabled/headers.conf :
# Evite de se faire piller son site (merci dsfc.net) : Header set X-Robots-Tag "index,follow,noarchive" # Evite que le contenu soit interprété différemment que définit dans le mime Type Header set X-Content-Type-Options nosniff # Protection contre le clickjacking Header set X-Frame-Options "SAMEORIGIN" # Protection contre les failles X-XSS Header set X-XSS-Protection "1; mode=block" # Faille spécifique à IE8 Header set X-Download-Options noopen; # Interdire l'embarquement de tout ou partie de votre site dans un site ou logiciel tiers Header set X-Permitted-Cross-Domain-Policies none # Enfin, les CSP permettent de vérifier l'origine des éléments du site # Plutôt complexes à mettre en place, voir #Header set Content-Security-Policy "default-src 'self';" always
Après un redémarrage d’Apache, l’observatoire Mozilla doit être content de vous.
Comment être un bon élève chez SSLLabs ?
SSLLabs ne regarde pas les en-têtes HTTP mais plutôt comment vous avez implémenté le TLS.
Voici une solution simple de configuration de TLS à mettre dans /etc/apache2/mods-enabled/ssl.conf :
# modern configuration, tweak to your needs SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLHonorCipherOrder on SSLCompression off # OCSP Stapling, only in httpd 2.3.3 and later SSLUseStapling on SSLStaplingResponderTimeout 5 SSLStaplingReturnResponderErrors off SSLStaplingCache shmcb:/var/run/ocsp(128000)
Et après un redémarrage, SSLLabs est lui-aussi content de vous.