Je veux renouveler mon certificat pour mon site à l’aide de Lets-encrypt.
Ici, prenons le cas où je n’ai pas accès à la machine qui héberge le site et que je n’ai qu’un accès FTP.
On peut toujours générer un certificat : il suffit de lancer Lets-encrypt sur son ordinateur, de générer les certificats et ensuite d’envoyer les certificats manuellement sur le site.

Pour Ubuntu 16.04 et suivants : voyez à la fin de l’article pour une mise à jour.

Je suis sous Linux Mint, et je fais tout en ligne de commandes.
Je me place dans un répertoire de travail :

mkdir certbot && cd certbot

Première chose, récupérer Lets-encrypt / Certbot :

git clone https://github.com/certbot/certbot

Une fois fait, on peut commencer.
La commande est ./letsencrypt-auto. On ne veut que le certificat, on ajoute certonly, et vu qu’on ne se trouve pas sur la machine qui accueille le site web, on doit se mettre en mode manuel avec --manual. Ensuite on ajoute les domaines pour qui on veut un certificat. Ce qui donne au final dans mon cas (pour deux domaines) :

./certbot/letsencrypt-auto certonly --manual -d lehollandaisvolant.net -d couleur-science.eu

Je lance ça. Si c’est la première fois que vous lancez certbot en mode manuel, il va devoir installer certains paquets et scripts, ce qui peut prendre quelques instants.
Vu que je suis sur un ordi qui n’est pas le serveur, il demande à loguer l’IP qui a fait la demande de certificat : j’accepte pour continuer.

Ensuite, il s’agit de prouver qu’on est bien le propriétaire du site pour lequel on demande un certificat. Ça se passe par la création d’un fichier sur notre site avec un contenu que Lets-encrypt nous donne.

En pratique, Lets-encrypt nous dit quelque chose comme ça :

Make sure your web server displays the following content at
http://lehollandaisvolant.net/.well-known/acme-challenge/v9IszSuhkY0yg-fpV3sxxxxxxx7KMhAzXY0AxP-tUvc before continuing:

v9IszSuhkY0yg-fpV3sxxxxxxx7KMhAzXY0AxP-tUvc.Y4xbv1PhMl2rRtjYAaaaAaaaAAAaA_ONg_x-zBcF8uHYxt4

Il faut utiliser FTP (ou SSH ou autre) pour créer un fichier /.well-known/acme-challenge/v9IszSuhkY0yg-fpV3sxxxxxxx7KMhAzXY0AxP-tUvc à la racine de votre site, et utiliser un éditeur de texte pour ouvrir le fichier et y mettre le texte v9IszSuhkY0yg-fpV3sxxxxxxx7KMhAzXY0AxP-tUvc.Y4xbv1PhMl2rRtjYAaaaAaaaAAAaA_ONg_x-zBcF8uHYxt4.

Une fois que c’est fait, essayez d’accéder au fichier dans votre navigateur : le fichier doit être accessible (pas d’erreur 404 ou 403 ou autre).
Si ça marche, poursuivez dans le terminal avec la touche « Entrée ».

Si vous avez demandé plusieurs domaines différents, il faudra faire cette manip pour chaque domaine (attention, les codes aléatoires changent à chaque fois).

Quand c’est tout bon, Lets-encrypt a généré vos certificats. Ils se trouvent dans le dossier /etc/letsencrypt/live/ puis votre domaine.
Il y a 4 fichiers dedans : cert.pem, chain.pem, fullchain.pem, privkey.pem.

Pour l’installation des certificats, je passe par cPanel que me propose mon hébergeur. Il faut aller dans la section "SSL/TLS". On gère ensuite la liste des certificats et clés privés.

Il faut uploader sa clé privée (le fichier privkey.pem) dans le champ sur la section Private Keys, et le fichier du certificat (fullchain.pem) dans la section Certificates.

Les certificats sont uploadés maintenant, il reste à les installer. Toujours dans cPanel, allez sur Install and Manage SSL for your site, puis choisissez le domaine que vous avez puis un certificat (celui que vous venez d’uploader doit figurer dans la liste, ou bien cliquez simplement sur « autofill by domain » pour pré-remplir les champs à l’aide des fichiers uploadés) et enfin validez par « Install ».

Et là c’est bon : votre site est maintenant en HTTPS et fonctionne. Faites la même manipulation d’installation pour les autres domaines (l’envoie des fichiers n’est nécessaire qu’une seule fois, mais l’installation du certificat doit se faire pour chaque domaine).

N’oubliez pas de supprimer le dossier .well-known et son contenu : il n’y en a plus besoin.
De même, souvenez-vous que le certificat expirera dans 90 jours, et il faudra refaire tout ça.

Pour Ubuntu 16.04, Lets-encrypt se trouve dans les dépôts. Passer par le dépôt Git fonctionne, mais peut renvoyer des erreurs (en fait Python crée un environnement virtuel et compile des trucs, ce qui produit des erreurs).
Donc au lieu de créer un dossier et d’utiliser git, installez-le depuis les dépôts :

sudo apt-get install letsencrypt

Puis, dans la commande principale, remplacez ./certbot/letsencrypt-auto par sudo letsencrypt. Le reste c’est tout pareil.

7 commentaires

gravatar
Alexis Dubus a dit :
Hmmm... Intéressant, je verrais pour mon site (OVH est "censer" intégré Let's Encrypt mais j'attend toujours.
gravatar
Pouet a dit :
C'était donc ça la maintenance de l'autre jour ? :p
gravatar
Le Hollandais Volant a dit :
@Alexis Dubus : au pire, tu peux utiliser la méthode manuelle puis basculer sur la méthode automatique d’OVH quand ça sera en place.

@Pouet : nope, ça c’était une migration de serveur.
La mise à jour des certificats SSL/TLS est rapide et invisible.
gravatar
Lossius a dit :
Sur ce coup tu m’enlèves une belle épine du pied, j'avais abandonné l'idée d'utiliser lets encrypt car je croyais que le script devait impérativement s'exécuter sur le serveur distant, donc merci :)
gravatar
Arfy a dit :
Perso, au taf, sur certains serveur "de prod" pour ne pas à avoir à installer toutes les dépendances, je suis passé par ce script qui fait bien tout tout seul dans son coin ;)
https://github.com/Neilpang/acme.sh

Les commentaires sont fermés pour cet article