Du SSL rapide et gratuit pour vos services
Cet article est libre d'accès pour tous grâce à ceux qui soutiennent notre blog indépendant.
Il est passé le temps où on était obligé de payer pour un certificat SSL et où il fallait remplir 15 000 papiers et attendre la réponse de l'autorité de certification.
Aujourd'hui nous avons let's encrypt qui a décidé de mettre un gros coup de pied dans la fourmilière en simplifiant tout ça et surtout, en rendant la génération du certificat totalement gratuit.
Voyons comment, en quelques minutes, nous allons pouvoir rendre nos applications accessibles en HTTPS.
Installation de l'utilitaire
Pour commencer, il faut installer un utilitaire appelé certbot
sur la machine vers laquelle pointe les domaines que nous souhaitons certifier.
Il est disponible sur les repos backport à partir de la version 8 de debian.
Dans le fichier /etc/apt/sources.list
ajouter la ligne :
deb http://ftp.debian.org/debian stretch-backports main
Cela permettra à apt
de pouvoir chercher des paquets sur le backport de Stretch (debian 9).
Ensuite l'installation est tout ce qu'il y a de plus classique.
$ sudo apt-get update
$ sudo apt-get -t stretch-backports install "certbot"
Certifions.
La méthode que j'utilise pour certifier un nom de domaine n'est liée à aucune techno ou outil particulier. Elle est générique.
Par contre, elle nécessite de couper tous les services qui potentiellement écoute sur le port 80.
Certbot va lancer un micro serveur qui va fournir sur le port 80 les infos nécessaires pour la certification. Il a donc besoin que ce port soit libre.
$ sudo certbot certonly --standalone -d domaine.com
--standalone
est la méthode que nous utilisons pour effectuer le processus de certification-d
permet d'indiquer les domaines à certifier. Vous pouvez certifier plusieurs domaines en même temps en rajoutant des-d
. Bien-sûr il faut que tous ces domaines pointent vers la machine sur laquelle nous lançons cette commande.
Une fois le processus terminé, vous retrouverez les fichiers .pem
dans le dossier /etc/letsencrypt/live/[domaine]/
.
Exemples d'utilisation
Nginx sert en HTTPS
Demander à Nginx d'écouter sur le port 443 n'est pas compliqué :
server {
listen *:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/[domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[domaine]/privkey.pem;
}
Tout ce que nous avons eu à faire c'est de lui indiquer qu'il fallait écouter sur le port 443 et où était stocké les certificats/clés.
Gitlab et SSL
Tout aussi simple, le support du SSL par Gitlab nécessite les actions suivantes :
- Modifier l'adresse de
http://[domaine-gitlab]
àhttps://[domaine-gitlab]
dans le fichiergitlab.rb
# /etc/gitlab/gitlab.rb
external_url "https://[domaine]"
- Ajouter les fichiers
crt
et.key
dans le dossier/var/opt/gitlab/ssl/
. A créer s'il n'existe pas. Dans le dossierssl
renommez leprivkey.pem
en[domaine-gitlab].key
etfullchain.pem
en[domaine-gitlab].crt
Il est aussi possible de faire des liens symboliques pour que les régénérations futures de certificats soient automatiquement pris en compte par les différents service qui les utilisent.
Normalement, ça doit faire moins de 15 min que vous lisez cet article et votre service doit à nouveau être opérationnel avec le support du SSL.
Rejoins 250+ développeurs de notre liste de diffusion et sois reçois les articles directement dans ta boite mail.
Aucun spam. Désabonnes-toi en un seul clic à tout moment.
Si vous avez des questions ou des remarques/conseils, n'hésitez pas à laisser un commentaire plus bas ! Je serais ravis de vous lire. Et si vous aimez l'article, n'oubliez pas de le partager avec vos amis.