Bonjour à tous et bienvenue pour un nouveau tutoriel avec aujourd’hui au programme, installer Let’s Encrypt sur votre serveur 😎
Petite info, il vous faut être connecté en root ou être sudoer !
Let’s Encrypt ?
Mais Let’s Encrypt qu’est ce que c’est ? Et bien c’est une toute nouvelle autorité de certification ! Et si on en entend parler partout c’est parce que déjà elle est gratuite (et simple d’installation). On peut donc générer soit-même des certificats SSL signés afin de pouvoir disposer du fameux cadenas vert tant apprécié et rassurant. Il vous faut juste posséder un serveur et un nom de domaine rattaché à ce dernier et enfin le client letsencrypt et c’est tout !
Prêt ? Allons-y !
Installation du client
Comme dit précédemment il nous faut le client nommé letsencrypt pour pouvoir générer notre certificat. Normalement vous avez déjà votre serveur et votre nom de domaine, sinon il va falloir commencer par aller en chercher un 😉
Comme d’habitude on commence par mettre à jour la liste des paquets et on installe git et bc.
sudo apt-get update && sudo apt-get -y install git bc
Et ensuite on clone le dépôt officiel !
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Et hop vous avez installé le client ! C’était simple non ? 🙂
Génération d’un certificat
Afin de générer votre certificat, vous devez avoir le port 80 libre. Cela signifie que vous devez stopper votre serveur web le temps de la génération. Et donc un peu de downtime…
Si vous avez Nginx:
sudo service nginx stop
Et on vérifie la disponibilité de notre port 80:
netstat -na | grep ':80.*LISTEN'
Pas de résultat ? Parfait ! On continue 🙂
Pour générer votre certificat il y a plusieurs façon de faire. En effet, Let’s Encrypt dispose de plusieurs plugin qui permettent de générer d’une manière ou d’une autre, mais nous allons nous utiliser le mode STANDALONE dans un premier temps.
Nous allons donc maintenant nous diriger vers notre répertoire Let’s Encrypt.
cd /opt/letsencrypt
Et on lance l’assistant de création !
./letsencrypt-auto certonly --standalone
Une fois lancé, il suffit de suivre les instructions.
- Saisissez une adresse email
- On accepte le contrat
- On entre le domaine et les sous domaines à sécuriser
Après le petit temps de génération, si vous obtenez un message comme celui ci-dessous c’est que vous avez réussi !
Output:
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your
cert will expire on 2016-03-15. To obtain a new version of the
certificate in the future, simply run Let’s Encrypt again.
– Your account credentials have been saved in your Let’s Encrypt
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Let’s
Encrypt so making regular backups of this folder is ideal.
– If like Let’s Encrypt, please consider supporting our work by:Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Let’s Encrypt vous a donc généré les fichiers suivant:
- cert.pem: Le certificat de votre domaine
- chain.pem: Le certificat Let’s Encrypt
- fullchain.pem: cert.pem et chain.pem combinés
- privatekey.pem: La clef privé de votre certificat
Vous les trouverez dans le dossier suivant:
/etc/letsencrypt/live/example.com/
Configuration de Nginx
Bon tout d’abord vous devez posséder Nginx (ce qui est plutôt normal pour un tutoriel sur Nginx). Si vous ne l’avez pas encore et bien vous pouvez l’installer simplement avec apt-get.
apt-get install nginx
Après le processus d’installation, il est temps de modifier notre server block par défaut (configuration d’un domaine) qui se trouve dans le dossier /etc/nginx/site-available/
sudo nano /etc/nginx/sites-available/default
Et on supprime les liens faisant référence au port 80 !
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
Et on les replaces avec celle du port 443, celui utilisé pour le HTTPS. On va aussi faire référence à nos certificats afin d’avoir notre petit cadenas vert ! Remplacez exemple.com avec votre nom de domaine.
listen 443 ssl;
# Remplacer exemple.com par votre domaine !
server_name exemple.com www.exemple.com;
ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;
N’oubliez pas d’indiquer le chemin de votre certificat, ici je me base sur mon tutoriel Let’s Encrypt.
On ajoute aussi les lignes suivantes afin sécuriser encore un peu plus nos échanges HTTPS !
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
Découvrez en plus sur les ciphers sur https://cipherli.st/ !
Et finalement on va rajouter un server block afin de rediriger tout notre traffic non-sécuriser vers notre site sécurisé !
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Je vous conseil de le mettre tout en haut avant le server block SSL 🙂
On sauvegarde et on quitte ! (CTRL + X, o sur nano)
Redémarrage de nginx pour prendre en compte la modification.
sudo service nginx restart
Et normalement tout fonctionne ! #Youpi
Vous pouvez maintenant pleinement profiter de votre site en HTTPS !
À très bientôt les amis !
Leave a Reply