Sécurisez votre site internet avec SSL/TLS – Let’s Encrypt


 

Présentation de Let’s Encrypt
 


Let’s Encrypt est une autorité de certification (CA). Elle délivre des certificats SSL/TLS pour serveur web gratuitement. Les certificats ne sont valables que 3 mois, il faut les renouveler pour assurer la sécurité entre les clients et votre site.

 

letsencrypt

 


 

Mise en place
 


Installation de l’agent
Nous procéderons à l’installation sur une VM Debian 8.5.0. Le serveur web installé est NGINX.
La mise en place est très simple et entièrement automatisée grâce à l’outil Certbot.

 

certbot
 

NB : Pour l’exemple, nous procédons à l’installation avec l’utilisateur root.
NB : Votre domaine/sous domaine doit être correctement redirigé l’IP publique de votre serveur web. Vérifiez également qu’un pare-feu ne bloque pas les ports 80 ou 443.

Téléchargement de l’outil Certbot :

1
cd /usr/local/sbin/
1
wget https://dl.eff.org/certbot-auto

Rendre l’outil exécutable :

1
chmod a+x /usr/local/sbin/certbot-auto

Avant de lancer l’installation, l’outil aura besoin d’accéder à

1
http://votre-domaine.net/.well-known/

Nous allons donc ajouter une exception dans nginx :

1
vi /etc/nginx/sites-available/default

Ajoutez les lignes suivantes dans le bloc par défaut :

1
2
3
4
5
6
server {
[...]
location ~ /.well-known {
allow all;
}
}

Enregistrez et quittez. Exécutez la commande suivante pour vérifier les éventuelles erreurs suites aux modifications.

1
nginx -t
1
2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Puis relancez nginx si tout est OK comme ci-dessus :

1
/etc/init.d/nginx restart

Génération des certificats
Nous allons maintenant générer nos certificats. Toujours depuis /usr/local/sbin , exécutez la commande suivante :

1
certbot-auto certonly -a webroot --webroot-path=<span style="color: #00c4ff;">/var/www/html</span> -d <span style="color: #00c4ff;">votre-domaine.net</span> -d <span style="color: #00c4ff;">www.votre-domaine.net</span>

L’outil certbot lance l’installation des différentes dépendances et vous demande, après quelques secondes, une adresse mail. Cette adresse sert de rappel, vous recevrez un mail dès que vos certificats approcheront la date de fin de validité. Renseignez une adresse mail :

 

certbotemail
 

Puis la fenêtre des termes de service s’affiche, sélectionnez « Agree » et validez :

 

certbotagreecontract
 

L’installation est terminée dès que vous voyez apparaître ce message :

1
2
3
4
5
6
7
8
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/votre-domaine.net/fullchain.pem. Your cert
will expire on 2016-12-08. To obtain a new or tweaked version of
this certificate in the future, simply run certbot-auto again. To
non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
1
 
1
2
Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Vos certificats sont enregistrés dans le répertoire suivant :

1
/etc/letsencrypt/archive

. Let’s encrypt créé automatiquement un lien symbolique des certificats les plus récents dans le répertoire :

1
/etc/letsencrypt/live/votre-domaine.net

. C’est ce chemin que nous utiliserons dans la configuration nginx. Ainsi, nous sommes certains que notre site utilisera la version la plus récente des certificats.

Configuration NGINX
Nous allons maintenant configurer SSL pour nginx.

1
vi /etc/nginx/sites-available/default

Supprimez ou commentez la ligne suivante à votre bloc :

1
2
3
4
server {
#listen 80;
#listen [::]:80 default_server ipv6only=on;
}

Ajoutez les lignes suivantes à votre bloc :

1
2
3
4
5
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/votre-domaine.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votre-domaine.net/privkey.pem;
}

Petit plus. Redirection automatique de HTTP vers HTTPS. Dans un nouveau bloc ajoutez :

1
2
3
4
5
server {
listen 80;
server_name votre-domaine.net www.votre-domaine.net;
return 301 https://$host$request_uri;
}

Enregistrez, quittez, vérifiez la configuration et relancez nginx :

1
nginx -t
1
/etc/init.d/nginx restart

Renouvellement automatique
Enfin, nous ajoutons un renouvellement automatique pour ne pas à avoir à nous préoccuper de la validité de nos certificats.

1
2
3
4
crontab -e
[1]
50 3 * * 1 /usr/local/sbin/certbot-auto renew &gt;&gt; /var/log/le-renew.log
55 3 * * 1 /etc/init.d/nginx reload

Enregistrez, quittez. Une vérification sera faite tous les Lundi à 3h50, et un rechargement de nginx à 3h55.
Le résultat du renouvellement des certificats sera disponible dans le fichier

1
le-renew.log

à l’emplacement

1
/var/log/

[🏆 Success] Vous avez installé et automatisé SSL/TLS sur votre serveur web gratuitement.
Enjoy ! 🙂