Ce petit tuto a pour but de vous expliquer comment créer un certificat letsencrypt via la méthode DNS.
Pour faire simple, nous allons créer une valeur spécifique (TXT value) dans le DNS OVH sur laquelle letsencrypt va se baser pour créer le certificat.


Le gros avantage de cette méthode, c'est que l'on ne doit jamais ouvrir la box, VM ou Pi sur internet de manière temporaire ou permanente.

Pre-requis:
- avoir le DNS hébergé chez OVH. Je me suis personnellement créé un OVH pour 1€ HTVA la première année puis 3€ HTVA les années suivantes. C'est leur premier prix.
- Jeedom installé sur un debian 9 (certaines dépendances nécessaires sont déjà installées par Jeedom).

Je me suis moi-même basé sur ces différents tutos/sujets pour créer celui-ci:
http://www.g-rom.info/2017/06/creer-des ... ns-de-ovh/
https://www.digitalocean.com/community/ ... r-debian-8
https://jeedom.github.io/documentation/howto/fr_FR/letsencrypt.mise_en_place

Cette procédure a été testée sur une VM sous Proxmox. Cette VM est un debian 9.2 à jour à la date de ce post :)

Ici, le but est de partager une méthode (p-e pas la meilleure) qui fonctionne.

toutes les commandes ont été faite en root.

Bon, fini avec la mise en bouche, parlont code maintenant.
Connectez vous en SSH sur votre seurveur et tapez les commandes suivantes:

on se place dans le dossier opt et on télécharge les fichiers nécessaires a la création du certificat et on installe les dépendances pour OVH

cd /opt
git clone https://github.com/letsencrypt/letsencrypt
git clone https://github.com/antoiner77/letsencrypt.sh-ovh
apt-get install python-pip
pip install ovh

Si vous avez une erreur avec la commande pip install ovh, essayez de mettre ces 2 commandes avant:

apt-get python-setuptools
apt-get python-wheel

Ces applications ne sont pas présentes sur certain OS (merci a Seki)

On rassemble tous les fichiers au même endroit (/opt/letsencrypt) et on donne les droits de s'exécuter au script.

cd letsencrypt.sh-ovh
mv * /opt/letsencrypt 
cd ..
rm -Rf letsencrypt.sh-ovh/
cd /opt/letsencrypt
chmod 700 manual-auth-hook.py
chmod 700 manual-cleanup-hook.py
mv ovh.conf.demo ovh.conf
chmod 700 ovh.conf


ensuite, aller sur https://eu.api.ovh.com/createToken/ sur votre PC
le but, maintenant est de créer les valeurs pour utiliser l'API de OVH

 

Account ID or email address: votre compte ovh
Password: son password
Script name: un petit nom pour votre script
Script description: et une petite description
Validity: Unlimited - permet d'utiliser le script sur une longue durée
Rights - les droits a donner au script:
GET on /domain
POST on /domain
PUT on /domain
DELETE on /domain
GET on /domain/*
POST on /domain/*
PUT on /domain/*
DELETE on /domain/*

 

une fois que c'est validé, vous récupérez 3 valeurs (a créer pour chaque site a securiser):

La partie sur le site de OVH est finie. On retourne sur le serveur Jeedom en SSH dans le dossier /opt/letsencrypt

nano ovh.conf

On renseigne les différentes clés (App Key, App Secret et Cons Key) et on sauve le fichier.

On active le SSL sur l'apache:

a2enmod ssl
a2ensite default-ssl.conf
systemctl restart apache2

Maintenant, on va lancer le processus de création du certificat dans le dossier /opt/letsencrypt. Remplacez le host jeedom.XXxxXxxX.ovh par le votre.
si vous n'avez que un seul Host a définir, il suffit de retirer le dernier -d jeedom-vm.XXxxXxxX.ovh

./certbot-auto certonly --preferred-challenges dns-01 --manual --manual-auth-hook ./manual-auth-hook.py --manual-cleanup-hook ./manual-cleanup-hook.py -d jeedom.XXxxXxxX.ovh -d jeedom-vm.XXxxXxxX.ovh

A la première fois, il vous sera demandé de fournir votre adresse mail, Si vous acceptez les "règles"(Agree), si vous voulez partager votre adresse mail (No) et si vous autorisez que votre ip soit loguée (Yes).

A la fin, vous devez recevoir un Congratulations!.

En cas de problème, par défaut, les logs de cette installation se trouvent ici: /var/log/letsencrypt/letsencrypt.log


On va maintenant lier ce certificat a apache

nano /etc/apache2/sites-enabled/default-ssl.conf

On ajoute le champ

ServerName jeedom.XXxxXxxX.ovh:443

on modifie les champs SSLCertificateFile et SSLCertificateKeyFile avec les nouveaux fichiers.

SSLCertificateFile	/etc/letsencrypt/live/jeedom.XXxxXxxX.ovh/fullchain.pem
SSLCertificateKeyFile	/etc/letsencrypt/live/jeedom.XXxxXxxX.ovh/privkey.pem

et on redémarre

systemctl restart apache2

Etape suivante, automatisez la chose. J'ai pas encore eu l'occasion de valider cette partie. je l'ai reprise d'un des sites sources.

crontab -e

Le serveur demande avec quel programme, vous voulez ouvrir le fichier.

Le contenu:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

ajouter la ligne:

42 6 * * * /opt/letsencrypt/certbot-auto renew --no-self-upgrade --post-hook "systemctl restart apache2"

si le nouveau certificat n'a pas été pris en compte, faites un petit redémarrage du service apache

systemctl restart apache2

Je vous met en plus la méthode manuelle a faire dans le dossier /opt/letsencrypt:

cd /opt/letsencrypt
./certbot-auto renew --no-self-upgrade
systemctl restart apache2

Et voila, votre jeedom devrait avoir un beau certificat valable pour 3 mois et renouvelé automatiquement.
De plus, ce que j'ai fait, chez moi. J'ai mis en place un petit serveur DNS avec ma zone XXxxXxxX.ovh et ajouté jeedom.XXxxXxxX.ovh dedans avec mon IP locale. Je ferais un petit tuto expliquant comment faire.

Bonne lecture

  

Commentaires   

0 #31 Herve Fouquet 30-11-2018 17:32
Tu as bien un certificat ?
Citer

Ajouter un Commentaire


Code de sécurité
Rafraîchir