Recherchez et suivez l'évolution des prix sur 140 000 produits

Installer let’s encrypt sur Virtualmin / Webmin

0

Comme vous le savez aujourd’hui des acteurs du web tel que google directement via son moteur de recherche et son navigateur, ainsi que modzilla Firefox, déprécient de plus en plus le protocole HTTP pour faire passer le web petit à petit au HTTPS. Je vous invite d'ailleurs à lire cet article qui sera plus détaillé que le miens sur le sujet. Ici je ne vais traiter que d'une solution technique.

La solution gratuite : Let’s encrypt

Let ‘s encrypt est une solution rapide et surtout gratuite pour ajouter un certificat à son site. Il est d’ailleurs proposer par OVH gratuitement sur ses hébergements mutualisés.
Let’s encrypt n’est pas sans contrainte, il est en effet nécessaire de mettre à jour son certificat tous les trois mois. C’est en effet un des moyens pour vérifier votre propriété du nom de domaine.

Mise en oeuvre

Voilà pour le topo, je vais maintenant vous montrer comment installer rapidement let’s encrypt sur un serveur dédié avec Virtualmin. J’ai créé un petit script qui permet de générer automatiquement le certificat, et de créer le cron qui va automatiquement renouveler le certificat (tous les trois mois)

Testé sur un debian 8 et 7 et virtualmin XXX, mais devrait fonctionner aussi bien sur ubuntu

Avant tout ça il faut installer let’s encrypt sur le serveur. Connectez-vous en SSH à votre serveur avec les privilèges root.

On se positionne dans le dossier root, et on va récupérer le dépôt GIT de let’s encrypt. (Si git n'est pas installé sur votre système => git apt-get install git)

cd /root/ && git clone https://github.com/letsencrypt/letsencrypt

Maintenant que let’s encrypt est installé, on va s'occuper de la suite en copiant le script sur le serveur.

Créer le fichier ./BASH/encrypt.sh en faisant :

mkdir ./BASH
nano ./BASH/encrypt.sh

Copiez/collez le contenu suivant : (J’ai essayer de commenter au maximum pour que cela reste compréhensible).

#!/bin/bash

## Nom de domaine domain.tld
MYDOMAIN=$1

## Nom d'utilisateur Virtualmin pour ce domain
MYUSERNAMEFORDOMAIN=$2

## Commande qui sera exécutée dans le cron
CMD="cd /root/letsencrypt/ && ./letsencrypt-auto certonly --email info@$MYDOMAIN --agree-tos --webroot --renew-by-default -w /home/$MYUSERNAMEFORDOMAIN/public_html/ -d www.$MYDOMAIN -d $MYDOMAIN --authenti$
## Le cron sera executé tous les 1er du mois à 3h01
CRON="01 3 1 * * $CMD"

## Création du dossiers où seront enregistrés les certificats
mkdir /home/$MYUSERNAMEFORDOMAIN/ssl_certificates

#Création du cron
crontab -l > /root/mycron
echo "$CRON" >> /root/mycron
crontab /root/mycron
rm /root/mycron

##Gen des certifs
cd /root/letsencrypt/ && ./letsencrypt-auto certonly --email info@$MYDOMAIN --agree-tos --webroot --renew-by-default -w /home/$MYUSERNAMEFORDOMAIN/public_html/ -d www.$MYDOMAIN -d $MYDOMAIN --authenticator$


Enregistrer avec CTRL + X

On va maintenant rendre le fichier exécutable

chmod +x ./BASH/encrypt.sh

Ajouter un alias en faisant

nano ./.bashrc

et en ajoutant la ligne à la fin de votre fichier

alias encrypt='~/BASH/encrypt.sh'

On active l’alias avec le commande suivante

source ./bashrc

Maintenant pour ajouter un certificat il suffira de taper la commande suivante :

encrypt domain.tld domain_login_virtualmin

Maintenant que l’on peut ajouter un certificat il faut le lier à son site sur virtualmin.
Pour que ce soit le plus clair possible je vais vous montrer la procédure complète avec un nom de domaine bidon sur virtualmin.

Une fois mon domaine créé, je vais activer le SSL, si jamais je ne l’ai pas fais à la création.
Pour ce faire il faut se rendre sur :

Virtualmin / Choisir votre domain / Edit virtual server / Enabled features / SSL website Enabled.

letsencryptwebmin-3

On en profite pour note le nom d’utilisateur, car c’est l’une des variables que l’on va communiquer au script avec le nom de domaine. Dans mon cas encryptest.

Lancez la commande, à la fin si tout s’est bien passé vous devez avoir un message du type « congratulations ».

/!\ Attention : Pour ne pas avoir d’erreur les DNS de votre domaine doivent pointer vers votre serveur, je le dis au cas où vous pensiez l’installer en amont dans le cadre d’une préproduction, ou d’une migration.

Reste maintenant à configurer le certificat pour le domaine.

Rendez vous sur Server configuration / manage SSL certificate / onglet « Update certificate and key »

Pour la partie signed SSL certificate, choisissez « file on server », parcourez les fichiers et partez chercher le fichier dans le dossier de votre user. Dans mon cas :

/home/encryptest/ssl_certificates/cert.pem

letsencryptwebmin-1

 

De la même façon on va chercher la clef privée.

/home/encryptest/ssl_certificates/privkey.pem

letsencryptwebmin-2

On clique ensuite sur install now

On retourne ensuite au manager des certificat et l’on clique sur l’onglet CA certificate
là encore on choisi files on server : et on va choisir le fichier fullchain.pem

/home/encryptest/ssl_certificates/fullchain.pem

Pour terminer on va vérifier que le script a bien créé le cron, qui va régénérer les certificats tous les mois.

letsencryptwebmin-4

Vous n’avez plus qu’a valider et à ce moment là votre site est en https.
Vous pouvez le vérifier en vous rendant sur l'url https://www.domain.tld 🙂

Partager.

A propos de l'auteur

Créateur du site, passionné par la domotique, le développement Web, Les gadgets Chinois et par plus ou moins tout ce qui existe en fait. Le site a été créé autour de l'impression 3D et de la domotique, mais d'autres briques s'ajoutent eu fil du temps. Car dès que j'ai une nouvelle passion, j'essaye de la faire partager. Vous pouvez aussi découvrir mon blog dédié à la pâtisserie.

Laisser un commentaire