SSL Report : A+

Avec quelques bons conseils et moult râleries (vous me connaissez), j’ai finalement mon admin et mes blogs en HTTPS, avec de surcroit un niveau A+ aux tests Qualys SSL Labs \o/

Qualys SSL Test sur open-time.net

Pour ma propre mémoire, voilà la procédure utilisée.

Certificat de domaine

Récupération d’un certificat chez StartSSL pour le domaine open-time.net et pour www.open-time.net. Une fois son compte créé si nécessaire, puis validé, puis idem pour le domaine, on récupère un certificat gratuit et valable 1 an.

Pour générer la clé privée (elle servira plus tard) et le certificate request, une simple commande comme suit suffira :

openssl req -newkey rsa:2048 -keyout open-time.passphrase.key -out open-time.csr

Il faut ensuite copier le contenu du fichier open-time.csr pour finir l’opération.

On récupère ensuite une archive contenant le certificat du domaine pour quatre différents type de serveur web (Apache, Nginx, IIS, autres).

Il faut si besoin récupérer aussi les certificats racine et intermédiaire, sur cette page pour StartSSL[1]. Une fois ces deux fichiers récupérés, les concaténer (un simple traitement de texte suffit pour faire ça) en mettant l’intermédiaire en premier[2]. Le fichier résultant étant nommé startssl.chain.crt en ce qui me concerne.

Installation et configuration Apache

Première étape, supprimer la passphrase utilisée pour générer la clé privée. La commande suivante permet de récupérer un fichier open-time.net.key qui ne nécessitera pas la saisie de la passphrase à chaque (re)démarrage d’Apache :

openssl rsa -in open-time.net.passphrase.key -out open-time.net.key

On copie ensuite la clé privée open-time.net.key sur le serveur, dans le dossier /etc/ssl/private. Puis on copie les certificats du domaine open-time.net.crt et le certificat racine+intermédiaire startssl.chain.crt dans le dossier /etc/ssl/certs[3].

Vérification de la clé et du certificat

Les deux commandes suivantes :

openssl rsa -noout -modulus -in /etc/ssl/private/open-time.net.key | openssl md5

et

penssl x509 -noout -modulus -in /etc/ssl/certs/open-time.net.crt | openssl md5

Doivent retourner le même résultat. Si ce n’est pas le cas c’est que la génération du certificat a posé problème et qu’il ne fonctionnera pas.

Configuration Apache

Première chose à vérifier, pour ma version d’Apache (une 2.2), la suite Cipher utilisée pour le chiffrage. Ça se passe a priori dans le fichier /etc/apache2/mods-avalaible/ssl.conf :

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on

Seconde partie, mettre en place la configuration Apache pour le domaine :

<VirtualHost *:80>
        …
        Redirect Permanent / https://open-time.net/
</VirtualHost>
<VirtualHost *:443>
        …
        SSLEngine on
        SSLCertificateFile              /etc/ssl/certs/open-time.net.crt
        SSLCertificateKeyFile           /etc/ssl/private/open-time.net.key
        SSLCertificateChainFile         /etc/ssl/certs/startssl.chain.crt
        SSLVerifyClient None

        # HSTS (mod_headers is required) (15768000 seconds = 6 months)
        Header always set Strict-Transport-Security "max-age=15768000"

        # Disable gzip with SSL
        SetEnv no-gzip 1
        …
</VirtualHost>

Vous aurez repéré les directives SSLCertificateFile qui pointe sur le certificat du domaine, SSLCertificateKeyFile qui pointe sur la clé privée et SSLCertificateChainFile qui pointe sur le fichier contenant les certificats racine et intermédiaire.

La partie HSTS permet d’indiquer aux navigateurs qui viendraient via le protocole HTTP d’utiliser HTTPS automagiquement pendant les six mois qui suivent ; ça évite de passer, après ce premier passage, par la redirection posée au début de la configuration Redirect Permanent / https://open-time.net/.

Enfin il est conseillé de désactiver la compression gzip, ce qui est fait avec la directive SetEnv no-gzip 1.

Cette page mise à disposition par Mozilla vous facilitera pas mal le boulot pour déterminer ce qu’il vous faut pour configurer Apache.

Voilà, il n’y a plus qu’à relancer Apache et de lancer le test sur SSLLabs pour obtenir (en croisant les doigts) un joli A+ !

Notes

[1] Récupérer ca.crt (pem) et sca.server1.crt (pem) sur le 2e onglet, 1er lien.

[2] Je ne suis pas certain que ça ait une importance, mais ça fonctionne comme ça chez moi, donc…

[3] Au passage ces fichiers n’ont besoin d’être accessibles en lecture seule que par le user root, donc vous savez quoi faire.

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/12825

Haut de page