Sécuriser Domoticz avec un certificat Let's Encrypt HTTPS • Domotique et objets connectés à faire soi-même

Si vous voulez pouvoir accéder à votre serveur Domoticz en dehors de chez vous de façon sécurisée, il est préférable d’installer un certificat Let’s Encrypt (ou un équivalent) à la place du certificat auto-signé installé par défaut. Let’s Encrypt est une autorité de certification (AC ou CA pour Certificate Authority en anglais) gratuite, automatisée et ouverte, exploitée pour le bénéfice du public. C’est un service fourni par Internet Security Research Group (ISRG).

Vous aurez également besoin d’installer un certificat valide pour utiliser de façon sécurisée l’appli domotique Homy pour iOS ou Android.

Le certificat auto-signé par défaut est rejeté par les navigateurs modernes

Si vous essayez d’accéder en HTTPS à l’interface WEB de Domoticz depuis un navigateur moderne, vous allez obtenir ce message d’alerte qui vous informe que vous allez accéder à un site dangereux (du point de vue du navigateur). Pas de panique, vous connaissez ce site. Cliquez sur Afficher les paramètres avancés puis sur Continuer vers le site…(dangereux) pour accéder à Domoticz.

On va arranger tout ça en remplaçant le certificat auto-signé installé par défaut lors de l’installation de Domoticz par un certificat valide Let’s Encrypt.

Configurer le routeur ou la box internet pour rendre accessible Domoticz depuis internet

La première chose à faire est de configurer un routage de port vers le serveur Domoticz. Pour cela connectez-vous à l’interface de gestion de votre routeur ou de votre internet. Voici un exemple sur une box internet SFR ou il faut se rendre dans le menu Réseau v4 puis NAT. La configuration est similaire d’une box à l’autre, vous devriez vous y retrouver assez facilement.

Créez plusieurs redirection en saisissant les paramètres suivants :

  • Protocole : TCP
  • Port (entrée) : 443 ou 8080
  • IP : l’adresse IP du serveur Domoticz sur le réseau local
  • Port (redirection) : idem
  • Cocher Activer
  • Ajouter la redirection en cliquant sur le Plus

Une première redirection du port 443 vers le port 443.

Une seconde redirection du port 80 vers le port 8080 que l’on utilisera juste pour créer le certificat Let’s Encrypt.

Vous pouvez créer une troisième redirection du port 8080 vers 8080 pour tester l’accès non sécurisé mais je vous le déconseille.

Créer un nom de domaine avec Duck DNS

DuckDNS est un service totalement gratuit qui permet de créer jusqu’à 5 noms de domaine. L’extension de votre domaine portera l’extension duckdns.org. Cette extension ne peut pas être personnalisée mais on ne va pas faire la fine bouche.

Pour utiliser Duck DNS, vous aurez besoin d’un compte Persona, Twitter, github ou reddit. Une fois connecté, il suffit d’indiquer le nom de domaine souhaité dans le champ de création

DuckDNS détecte automatiquement l’adresse IP de votre box internet. Il est toutefois possible de la modifier et même d’indiquer une adresse IP de type IP v6 si votre box le supporte.

Si vous avez créé une redirection du port 8080, vous pouvez tester que vous avez bien un accès à Domoticz depuis Internet en saisissant le nom de domaine dans un navigateur. Comme vous pouvez le constater, Chrome (ou n’importe quel autre navigateur) vous informe que le site n’est pas sécurisé. Toutes les commandes exécutées et les données échangées avec le serveur sont envoyées sans cryptage sur internet.

Installer Let’s Encrypt sur Raspberry Pi OS (ancien Raspbian)

Nous allons voir ici comment installer Let’s Encrypt sur Raspbian pour générer un certificat valide. Vous pouvez utiliser ce certificat si Domoticz est installé sur un NAS (Synology par exemple). Vous pouvez aussi générer un certificat Let’s Encrypt à l’aide de l’outil Cerbot qui nécessite Python 2.7. Suivez la documentation officielle pour plus de détails.

Pour installer Let’s Encrypt sur Raspbian, exécutez les commandes suivantes les unes après les autres

cd /etc
sudo git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
sudo ./letsencrypt-auto

Créer un certificat Let’s Encrypt

Vous aurez besoin des informations suivantes pour créer votre certificat :

  • Un nom de domaine. Utilisez le nom de domaine créé sur DuckDNS par exemple (sans le http:// devant)
  • Une adresse email (bon, c’est pas le plus difficile à trouver 🙂 )
  • Le chemin vers le dossier de l’interface Web Domoticz. Sur Raspbian c’est ~/domoticz/www

Modifiez les paramètres de la commande Let’s Encrypt et exécutez celle-ci

sudo /etc/letsencrypt/letsencrypt-auto certonly --webroot --email  -d  -w /domoticz/www/

Durant le processus de création du certificat, Let’s Encrypt va chercher à joindre le serveur Domoticz sur le port 80, c’est la raison pour laquelle il faut router ce dernier vers le port 8080, au moins le temps de créer le certificat.

Si tout s’est bien déroulé, vous devriez obtenir un compte rendu de ce type

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for xxxxxx.duckdns.org
Using the webroot path /home/pi/domoticz/www for all unmatched domains.
Waiting for verification...
Cleaning up challenges

Vous pouvez supprimer la redirection du port 80 vers le port 8080 sur votre routeur ou box internet.

Installer le certificat SSL Let’s Encrypt sur Domoticz

Il ne reste plus qu’à installer le certificat dans le répertoire de Domoticz en exécutant les commandes suivantes. Par sécurité, la première commande fait une copie du certificat installé par défaut.

sudo cp ~/domoticz/server_cert.pem ~/domoticz/server_cert.pemold
sudo cat /etc/letsencrypt/live/homy-domoticz.duckdns.org/privkey.pem >> ~/domoticz/server_cert.pem
sudo cat /etc/letsencrypt/live/homy-domoticz.duckdns.org/fullchain.pem >> ~/domoticz/server_cert.pem

Ou d’après le retour de Philippe

sudo cat /etc/letsencrypt/live/homy-domoticz.duckdns.org/privkey.pem > ~/domoticz/server_cert.pem

On fait une copie en local pour pouvoir le réinstaller en cas de problème (après une mise à jour par exemple)

sudo cp ~/domoticz/server_cert.pem ~/domoticz/letsencrypt_server_cert.pem

Voilà, il ne reste plus qu’à redémarrer Domoticz

sudo /etc/init.d/domoticz.sh restart

Tester la connexion sécurisée

Et voilà, tout est prêt, il ne vous reste plus qu’à tester que tout fonctionne en vous rendant sur votre domaine en saisissant une adresse de ce type

https://nom_domaine.duckdns.org:443

Si tout est correct, vous devriez directement arriver sur l’interface Web de Domoticz sans aucun message d’alerte. Le cadenas est verrouillé ce qui indique que la communication est cryptée et que le certificat est valide. Vous pouvez d’ailleurs consulter ce dernier pour le vérifier (ici sur Safari).

En cas de problème, videz le cache de votre navigateur pour forcer le rechargement complet de la page.

Avez-vous aimé cet article ?