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
Salut merci pour ton tuto, je vais me faire ça cette semaine 🙂
Je reviens vers toi pour te dire si tout est OK
Bonjour,
lGET on /domain
POST on /domain
PUT on /domain
DELETE on /domain
GET on /domain/*
POST on /domain/*
PUT on /domain/*
DELETE on /domain/*
Ne fonctionne pas en l’état il faut élever les espaces ? mais pour le coup si je fais aucune redirection de port 443 ca fonctionne pas.
avec la redirection le certificat est a actif, mais la n’est pas le but, j’aimerais que ça marche sans redirection de port
pourriez vous m’aider ?
MERCI
j’ai remis les images, cela devrait t’aider 🙂
Bonjour, merci pour la photo ça confirme le non fonctionnement de la création 🙂
mais je n’ai toujours pas accès a mon jeedom sans ouvrir le port 443 sur son IP
J’ai modifié ovh.conf pour noté l’api recrée, généré un nouveau certificat
redémarre apache
une idée ?
MERCI
Bonjour,
Si je comprends bien, le certificat est créé ?
Tu bloqué a quelle étape ?
J’ai une erreur :
mv: impossible d’évaluer ‘ovh.conf.demo’: Aucun fichier ou dossier de ce type
ca peut etre ca ?
Je suis sous PROXMOX en VM, j’ai remis un Snapshop propre et recommencer la procédure depuis le début, même résultat sans port ouvert aucun accès, avec redirection de port ça fonctionne.
Je sèche un peu
J’ai chercher 2 bonnes heures, et je trouve rien d’anormal, en ouvrant le port 443 impeccable certificat valable.
en fermant le 443 je ne joins pas ma box.
Dommage niveau sécurité cette version du SSL est vraiment top
Si tu trouve le temps de me filler un coup de main via Messanger / Mail ca serait cool
Merci en tout cas
Dommage que cette méthode n’attire pas plus de monde, elle serait bien plus sécurise que d’ouvrir le port 443 a son jeedom.
si quelqu’un passe par la, j’aimerais bien la mettre en place.
Merci
Je pense avoir trouvé mon erreur je restais sur un DNS A vers mon IP
dans le debut du TUTO tu note : (TXT value) dans le DNS OVH
j’ai supprimer mon sous domaine et recrée un sous domaine du même nom jeedom.xxxmondomainexx.ovh avec le DNS TXT, en valeur que dois je mettre ? mon domaine ?
j’ai crée 5 certificats je dois attendre 5 jours 🙂 pour la réponse merci
Je cherche à comprendre où est ton problème, tu viens avec plein d’erreurs différentes. Ce tuto permet de donner accès a l’API du dns de OVH. Il écrit automatiquement une entrée txt pour valider le certificat. On lié le certificat a apache. Mais il faudra toujours ouvrir le port si tu veux avoir accès de l’extérieur. Perso. J’ai limité les IP de mon boulot a pouvoir avoir accès. D’où ce tuto
Bonjour,
Merci pour la réponse,
Quand tu note :
que l’on ne doit jamais ouvrir la box, VM ou Pi sur internet de manière temporaire ou permanente.
Quel intérêt de lier l api et de faire tout cette procédure pour au final ouvrir le port de l extérieur ?
C est d avoir du https en interne ?
Au vu du descriptif pour moi tu lie l api et grâce à lui il retrouve ton jeedom.
C est pour ca que ca ne fonctionne pas Mdr. Si je dois ouvrir le port 443 de l extérieur ca fonctionne, mais j ai le même résultat qu un tuto basic pour installer le SSL
Comme je l’ai mis sur le forum, oui cela bloqué l’accès mais après, tien qu’à toi de n’ouvrir que pour certaines IP comme telegram par exemple.
Un autre avantage, si tu n’utilises pas le port standard, cela permet de générer un certificat quand même.
Merci pour ces info
Connexion depuis smart Phone avec 4g donc l ip change 😏
Je viens de changer de sous domaine pour recrée un certificat.
Si je crée pas de DNS associé le certificat ne passe pas a CONGRATULATION !
Je crée donc un DND TXT nomé : domotique.mondomaine.ovh
Si je ne met pas de valeur, je ne peut pas enregistrer la DNS, donc elle ne peut pas etre remplis seul par la création du certificat.
Je suis toujours au même endroit.
Soit je suis une brelle, soit il manque un bout sur le tuto, le début est vraiment pas clair.
C’est pas une critique bien au contraire, les tuto present sur la toile fonctionne parfaitement et c’est clair du début a la fin.
Ici la fin est très clair, mais le début est a se poser des questions ?
en attendant merci d’avoir pris le temps de me répondre.
Dans les logs, tu as quoi comme erreur ?
Je t embête h.fouquet, c est surtout la partie création du sous domaine si tu peut regarder.
J ai une il fixe
Si je met vers A monip
Ou TXT et quelle valeur ? Puisque sans valeur je ne peut pas créé la DNS.
Mais au final cette méthode sert à créé un certificat sans ouvrir les ports.
La méthode standard faut les ouvrir.
Donc ça doit fonctionner puisque si je redirige ma jeedom vers 443 et DNS OVH A xxx.xxx.xxx.xxx ( mon ip fixe ) ca fonctionne.
Moi je croyais que ça allait fonctionner comme la dns jeedom sans ouvrir de port depuis l extérieur.
Au final à quoi sert l api ? Juste pour la créations ?
Merci
j’ai posté sur le forum les photo pour le DNS