Fantomas’side

Weblog open-source

Des certifs et des bots

Je ne sais pas si c'est le passage à Firefox 51, qui met désormais bien en avant le manque de connexion sécurisée sur les sites consultés ou le contexte ambiant qui donne envie de chiffrer ses communications, mais j'ai donc décidé d'utiliser HTTPS pour servir ce blog et mes autres sites.

Enfin surtout ceux contenant des données personnelles ou nécessitant de se s'authentifier, car mon problème est surtout là. Le vol d'identifiants devient de ce fait moins facile.

N'étant pas très familier avec ce genre de procédures, je me suis naturellement tourné vers Let's Encrypt et le script certbot fourni par l'EFF, pour obtenir et mettre en place les certificats sur le serveur.

Après quelques minutes de lectures et de tests, facilement j'ai pu générer et installer les certificats de sécurité nécessaire, adapter les configurations Apache, et le tour était joué. Je me rapelle d'une époque où cela prenait bien plus de temps.

Un des points fort de certbot est l'automatisation du processus de validation nécessaire pour obtenir un certificat. Le renouvellement automatique des certificats est donc pris en charge, en lançant le tout périodiquement en cronjob par exemple.

Franchement il est difficile de faire plus simple, surtout à ce prix là (gratuit), c'est une belle initiative qui mérite d'être saluée.

Si je devais trouver un défaut à certbot, cela serait le plug-in Apache, qui à l'heure actuelle ou j'écris ces lignes, fait quelque peu défaut, surtout si vous avez une configuration complexe.

Revoyons la procédure en pas à pas et avec l'exemple :

Installer certbot :

wget https://dl.eff.org/certbot-auto 
chmod a+x certbot-auto 
./certbot-auto  # Installe les dépendances 
a2enmod ssl # On installe le mod SSL pour Apache

Récupérer un certificat pour son domaine :

./certbot-auto certonly -d mon.domaine -d www.mon.domaine 

Adapter sa configuration Apache

<VirtualHost *:80>
    # On redirige tout le trafic HTTP vers HTTPS
    ServerName mon.domaine
    ServerAlias www.mon.domaine

    RewriteEngine on
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    # On entre en version HTTPS
    ServerName mon.domaine
    ServerAlias www.mon.domaine

    # Ici votre conf d'habituelle

    # On installe les certificats et la configuration SSL
    SSLCertificateFile /etc/letsencrypt/live/mon.domaine/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mon.domaine/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

  </VirtualHost>
</IfModule>

Mettre en place le cronjob

25 0,12 * * * ./certbot-auto renew --quiet

Merci qui ? Merci Let's Encrypt et l'EFF !