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 et au cPanel (proposé sur beaucoup d’hébergements mutualisés).
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.

Je suis sous Linux Mint 18 (basé sur Ubuntu 16.04), et je fais tout en ligne de commandes.

Installation de Letsencrypt

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

sudo aptitude install letsencrypt

Une fois fait, on peut commencer.

Production des certificats

La commande est letsencrypt.
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. Perso je met une sécurité à 4096 bits avec --rsa-key-size 4096 Ensuite on ajoute les domaines pour qui on veut un certificat. Ce qui donne au final dans mon cas (pour trois domaines) :

letsencrypt certonly --manual -d lehollandaisvolant.net -d couleur-science.eu -d neerden.eu --rsa-key-size 4096

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.
Il faut aussi mettre son adresse email, sur laquelle vous recevrez les notifications d’expiration du certificat.

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.

Installation des certificats

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. Cliquez ensuite 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.

Cette dernière manip (choix du domaine et autofill) est à faire pour chacun de vos domaines.

Notes

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.
Vous recevrez de toute façon un e-mail de notification à l’adresse que vous avez renseigné lors de la génération des certificats..

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