Sécuriser Domoticz avec un certificat Let’s Encrypt, accès depuis internet HTTPS

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.

domoticz https 443 alert chrome

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.

domoticz https ssl lets encrypt router configuration

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 configuration homy

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.

duckdns ip address

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.

duckdns domoticz http

Installer Let’s Encrypt sur 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 :

  • <your complete sub.domain name> Un nom de domaine. Utilisez le nom de domaine créé sur DuckDNS par exemple (sans le http:// devant)
  • <your email> Une adresse email (bon, c’est pas le plus difficile à trouver 🙂 )
  • <user home> 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 <your email> -d <your complete sub.domain name> -w <user home>/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

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

Attention, le certificat par défaut risque d’être ré-installé après chaque mise à jour de Domoticz. Exécutez la commande sudo cp ~/domoticz/letsencrypt_server_cert.pem ~/domoticz/server_cert.pem pour rétablir le certificat Let’s Ecrypt.

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).

domoticz duckdns lets encrypt ssl https connexion

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

Vous pouvez maintenant vous connecter de façon sécurisée à Domoticz depuis l’appli Homy pour iOS et Android.

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Promos à ne pas louper

Tags :

2
Poster un Commentaire

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  S’abonner  
Notifier de

J’ai légèrement progressé,
J’ai relancé domoticz qui était en status excited, et de plus j’ai une erreur avec le certificat, il est indiqué délivré par *.domoticz.com

Ca signifie qu’il n’a pas pris en compte le certificat juste installé.
J’ai pourtant bien eu :
Waiting for verification…
Cleaning up challenges

Bonjour,
Comment fait on pour désinstaller si à la fin du processus ca ne fonctionne pas et que domoticz ne marche plus ?
Merci

Domotique et objets connectés à faire soi-même