Rouler en classe A avec Apache

classe-a-1

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.

 

Sur le même sujet :