Cette procédure fonctionne parfaitement pour un Raspberry Pi, une VM, un PC ou tout autre support qui héberge Jeedom. Ce guide permet donc de générer un certificat Let’s Encrypt qui sécurisera alors la connexion avec votre serveur domotique Jeedom depuis internet sans avoir à payer un abonnement.
Car il est effectivement possible de faire cette sécurisation en passant par un pack Jeedom. Mais pour un DIY de bout en bout, c’est tout de même plus plaisant de faire cela soit-même. D’autant qu’en suivant la procédure, c’est relativement simple.
Un nom de domaine associé à l’adresse de votre Jeedom
Je vous propose d’utiliser un nom de domaine externe. OVH propose des noms de domaine en .ovh par exemple pour 1,90€ à l’année, ce qui permet de disposer d’un nom de domaine personnalisé.
Pour l’exemple, je propose le fournisseur OVH, sachez que si vous disposez déjà d’un nom de domaine disponible et valide chez un autre provider, vous pouvez tout aussi bien utiliser celui-ci.
Commencez alors par vous rendre sur le site d’OVH et réservez votre nom de domaine perso. Laissez aller votre imagination, ce sera ce nom de domaine qui pointera vers votre domotique, choisissez-le bien!
Pour la bonne compréhension du guide, je vais prendre comme exemple le domaine www.domaine.ovh
Une fois votre nouveau domaine acquis, rendez-vous dans l’administration de votre domaine chez OVH. Il ne suffit pas de disposer d’un domaine pour pointer vers votre Jeedom, il faut déjà lui indiquer où est votre Jeedom pour l’afficher quand vous saisissez votre nouveau domaine dans un navigateur.
1 Pour cela, rendez-vous dans la section “domaines” de votre interface de gestion Ovh, puis dans l’onglet “zone DNS”.
2 Faites “ajouter une entrée “dans le menu à droite de la page.
3 Sélectionnez le champ de pointage “A” dans la liste.
4 Enfin, indiquez le sous domaine www et votre adresse IP publique dans le champ Cible. Pour connaître votre Adresse IP publique, utilisez un service comme What’s my IP par exemple.
Il faut à présent patienter le temps de la propagation DNS. Cela prend quelques heures en général.
Notez que si votre FAI ne vous fournit pas d’adresse IP fixe, cela reste toujours possible via du DynDNS.
La génération du certificat
Avant de démarrer la procédure, il est important de bien effectuer la mise à jour des dépôts. Pour ce faire exécutez la commande
sudo apt update
Il ne reste plus qu’a s’assurer que snap est bien disponible sur le système. Pour ce faire lancer la commande
sudo apt install snapd
A présent, nous pouvons demarrer la procédure
1 Démarrez la procédure en exécutant la commande :
sudo snap install core
Vous obtenez alors les lignes suivantes dans la console :
2 Passez ensuite la commande suivante pour être certain de bien disposer de la dernière version de snapd
sudo snap refresh core
3 A présent, installez certbot avec la commande :
sudo snap install --classic certbot
4 Puis préparez l’exécution de la commande certbot avec la commande :
sudo ln -s /snap/bin/certbot /usr/bin/certbot
5 Maintenant, tout est prêt, lancer les commandes.
sudo certbot --apache sudo certbot certonly --webroot
La procédure demande alors une adresse Mail qui sera notifiée pour le renouvellement du certificat.
Une autre question demande votre autorisation, répondez par Y.
Une autre question demande si vous désirez partager votre mail avec la fondation, répondez par N.
Enfin, il est demandé de saisir le nom de domaine de votre Jeedom. Celui-ci correspond au nom de domaine créé plus haut sans “http://”.
Une toute dernière question est alors posée, il s’agit d’indiquer l’emplacement du répertoire web de votre machine. Ici, répondez par /var/www/html/.
Patientez quelques secondes et voilà votre certificat activé.
Le renouvellement
Tant que nous y sommes, profitons-en pour automatiser le renouvellement du certificat tous les 90 jours.
1 Afin de planifier ce renouvellement, il faut faire appel à la crontab, il s’agit tout simplement du planificateur de tâche de debian.
sudo nano crontab -e
2 Puis collez la ligne suivante en fin de fichier
0 1 30 * * /snap/bin/certbot renew >> /var/log/ssl-renew.log
Vous pouvez également utiliser la ligne suivante dans votre crontab afin de demander un renouvellement tous les 89 jours, soit la veille de l’expiration de votre certificat. (Merci à Max pour cette astuce)
0 1 * * * bash -c '[ $(expr $(date +\%s) / 86400 \% 89) == 30 ] && /snap/bin/certbot renew >> /var/log/ssl-renew.log 2>&1'
3 Enregistrez et quittez, voilà à présent votre certificat se renouvellera automatiquement tous les 30 du mois !
Renouvellement manuel
Pour effectuer un renouvellement manuel, chose que je vous recommande pour être certain du bon déroulement, il faut commencer par réactiver l’ouverture du port 80 pour votre Jeedom sur votre routeur (box internet). C’est pourquoi je préfère effectuer cette opération manuellement sur mon installation. Cela me permet de n’ouvrir le port 80 que quelques secondes, le temps de l’opération.
Si toutefois vous préférez gérer ce renouvellement manuellement, il faudra utiliser la commande suivante :
certbot renew
Votre renouvellement sera alors effectué sans problème. Vous pouvez ensuite refermer le port 80 de votre routeur.
Pour aller plus loin
Si vous avez des soucis, voici quelques commandes bien utiles qui m’ont permis d’identifier et corriger mon problème.
wget --header="Host: www.domaine.ovh" -O - http://localhost
1 Cette commande permet d’en savoir un peu plus sur une possible erreur Apache.
netstat -anp
2 Cette commande permet de vérifier l’utilisation des ports du raspberry.
sudo apachectl configtest
3 Cette commande permet de vérifier la bonne configuration d’Apache et le cas échéant connaitre ses erreurs.
hostname -f
4 cette commande permet de connaitre le Hostname utilisé par le raspberry.
sudo rm -rf /etc/pip.conf
5 cette commande permet de résoudre le problème du message d’erreur suivant : Had a problem while installing Python packages.
Source : domo-blog.fr et certbot.eff.org