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 du Raspberry Pi. 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 * * /etc/certbot renew –dry-run >> /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 >> /home/pi/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.
Conclusion
Voilà, votre domotique Jeedom DIY est de nouveau sécurisé pour ses accès extérieurs avec la nouvelle méthode de sécurisation. Je n’exclus pas que ce soit toujours possible de générer un certificat depuis un nom de domaine Freebox, auquel cas, il n’est pas nécessaire de disposer d’un nom de domaine chez OVH. Pour autant, je n’ai pas réussi chez moi malgré toutes mes tentatives à générer un certificat depuis la découverte de la faille par Let’s Encrypt. Y-a-t-il à présent une incompatibilité avec la Freebox? Quoi qu’il en soit, cette nouvelle méthode fonctionne très bien maintenant.
Lire aussi
Installer Jeedom 4.x sur Raspberry Pi 4: Le guide complet de A à Z 2023
Sur le blog, nous vous proposons de nombreux guides pour découvrir la domotique et progresser dans la pratique. Nous avons déjà abordé à de nombreuses reprises les projets Do It Yourself sur le blog. Nous aimons le fait de pouvoir…
Bonjour,
C’est la première fois que je mets en place un certificat SSL pour mon jeedom j’ai acheté du coup un nom de domaine chez ovh tout est ok jusque-là.
J’ai ajouté ma zone DNS avec mon ip publique et j’ai suivi toutes les étapes de page 2 du tuto, j’ai la syntax ok après la vérification du test apache.
J’ai bien ouvert mes ports 80 et 443 sur ma box à l’époque déjà pour avoir accès à mon jeedom à distance via mon ip publique.
A présent quand je vais sur mon navigateur sur mon domaine.ovh j’ai la page par défaut d’OVH “Félicitation Votre domaine mondomaine.ovh a bien été créé chez OVH.”
Est-ce c’est parce que j’ai fait la configuration de ma zone DNS il y a une heure et que je dois encore attendre ?
Merci à vous.
bonjour, oui il y a un delais de propagation DNS.
bonjour,
erreur de port dans le texte 433 au lieu de 443.
merci pour le blog 🙂
oups ! boulette corrigée ! Merci
Bonjour Mr Brunet.
Merci pour les excellents tutos que vous proposez.
J’avais utilisé cette procédure d’accès à Jeedom en HTTPS avec certificat SSL gratuit sur un RPI 3B+ avec Debian Stretch. Ça avait très bien fonctionné.
Je viens de passé à Jeedom V4 sur Debian Buster 10. Pensez-vous que la procédure soit encore applicable ?
Merci beaucoup
Bonjour Jean-Claude,
normalement rien n’a changé, sur le protocole de sécurisation, cela doit fonctionner même sur Rpi 4 avec une version Raspberry Pi OS récente.
Bonjour,
Merci pour ce tuto très bien fait.
Juste une remarque, je pense qu’il faut utiliser sudo crontab -e au lieu de sudo nano crontab -e
Bonjour,
je me permet s une remarque, le dernier commentaire corrige une coquille dans le tutoriel ‘sudo crontab -e’ afin d’accéder au bon fichier de planification.
J’ai à mon tour une question, j’ai utilisé
sudo certbot –apache
d’après le descriptif, c’est après cette commande
sudo certbot certonly –webroot
que la suite de la config se fait. A quoi sert cette seconde commande ?
je ne comprends pas son utilité, et si après avoir inscrit en crontab le renouvellement il va effectuer la tâche seul.
Par avance, merci de votre retour, et merci pour ce super tuto !!
Bonjour,
Lorsque je lance la commande sudo apachectl configtest j’ai bien le message evoqué (could not reliably…to suppress this message).
Toutefois j’ai une question. Quand je lance la commande sudo nano /etc/apache2/apache2.conf un long texte s’affiche m’expliquant tout un tas de choses sur Apache mais je ne sais pas où exactement entrer la ligne ServerName http://www.domaine.ovh.
Pourriez-vous détailler ce point pour le noob que je suis !
Merci
Salut, pour info :
je viens de réinstaller jeedom sur un nouveau nuc, et donc de refaire la sécurisation via ton tuto.
Tout se passe bien, et en fin de génération de certificat j’obtiens le message suivant “certbot has setup a scheduled task to automatically renew this certificate in the background”.
Je comprends donc que le renouvellement est donc désormais automatisé, sans avoir fait la partie crontab , et il m’est d’ailleurs indiqué la date d’expiration pour dans 90 jours.
On peut aussi contrôler la présence de cette tâche parmi toute celle du système avec la commande
systemctl list-timers
Bonjour,
Je souhaite passer jeedom en SSL, j’ai suivi la manip bien détaillé mais ça bloque à l’installtion du certificat et plus précisemment à “sudo certbot –apacache”
Je précise que j’ai bien accès à via mon nom de domaine en http.
J’ai cela à la fin de la commande “sudo certbot –apacache”
RuntimeError: OpenSSL 3.0’s legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.
J’ai peut être loupé quelque chose.
Je suis sur debian 11 avec jeedom 4.4.19 et du Python 3.9.2
Merci d’avance.
Bonjour,
cela fait bien longtemps que je n’a pas utilisé cette méthode mais aux dernières nouvelles elle fonctionnait encore il y a pas si longtemps.
Le message semble tout de même indiquer quelque chose qui manque pour permettre à la commande de s’executer correctement.
Bonjour,
je viens de suivre le tuto, et j’ai exactement la même erreur que Florian 🙁
Bonjour,
J’ai également le même message d’erreur que Florian
Bonjour,
Plus ce pb depuis que je suis passé en Debian 12.
1 fois sur 3 j’ai la page “site en construction” quand j’essaie en HTTP. Une idée.
Pour le certificat à priori tous s’est bien passé en revanche j’ai mis cette ligne “sudo certbot –apache” fait toute la config du mail puis du nom de domaine et ensuite j’ai mis cette ligne “sudo certbot certonly –webroot” qui on dirait n’a servi a rien car j’ai eu un retour que c’était déjà configuré. Ai-je bine fait ?
Pour l’instant quand j’utilise le site check SSL j’ai failed to open TCP connection…