Avec certains navigateurs, on peut ajouter une exception qui peut être permanente (Chrome, Firefox), pour d'autres la navigation n'est pas possible (Safari sur mon iPhone).
Voir aussi le post de vinchz31 qui a suivi le tuto et a un peu plus détaillé le sujet
Pour l'éviter, il est nécessaire de disposer de 2 éléments :
- Un nom de domaine personnalisé
- Un certificat SSL valide pour ce nom de domaine
Si vous n'êtes pas dans ces conditions, ce qui suit risque d'être un peu "rugueux".
La première partie concerne l'obtention d'un sous domaine avec une freebox.
Si vous avez déjà un domaine personnalisé, passez directement à la seconde partie.
- Nom de domaine
Vous disposez déjà d'un nom de domaine qui pointe vers votre box, celle-ci pourra servir.
Si vous n'en possédez pas, il faudra le créer via un opérateur gratuit ou payant.
Pour ma part, j'ai choisi de profiter de cette fonctionnalité sur la freebox.
- Création du nom de domaine personnalisé sur freebox
Connectez vous sur la page d'administration locale de votre freebox et cliquez sur Paramètres. Dans le mode avancé, cliquez sur l'icône Nom de domaine
Dans la boite de dialogue qui vient de s'ouvrir, cliquez sur Ajouter un nom de domaine
Choisissez l'option qui vous convient, puis faites suivant.
Inscrivez le nom de votre domaine, dans cet exemple c'est un sous-domaine de freeboxos.fr que j'ai appelé domoticz.
Faites suivant et validez, le domaine sera généré et un certificat vous procurera en plus un accès sécurisé à votre box lorsque vous n'êtes pas chez vous.
Il faudra probablement attendre quelques heures avant d'utiliser cet accès, le temps que les DNS prennent en compte ces changements.
[/size]
- Personnalisation du reverse DNS chez Free
J'ai eu des difficultés pour générer mon certificat avant de faire cela.
Je conseille donc de le faire.
Allez dans votre espace abonné chez Free, puis dans Ma Freebox cliquez sur Personnaliser mon reverse DNS
Lisez attentivement ce qui suit, puis inscrivez le nom de votre domaine dans la partie reverse DNS et validez.
[/size]
- Certificat SSL/TLS
Nous allons générer un certificat qui sera certifié par Let's Encrypt.
Ceci n'est possible que sous Linux ou Mac, et je conseille d'utiliser une machine assez puissante pour le générer, en tout cas pas un Rapsberry Pi ; la partie Diffie–Hellman du certificat que nous devrons inclure dans notre certificat est très longue à générer sur une telle machine.
Pour générer le certificat, nous utiliserons certbot, un utilitaire qui automatise cette tâche et disponible dans les dépots Linux.
Nous aurons également besoin de mettre en place une redirection du port 80 de notre adresse Internet externe vers la machine qui va générer ce certificat, c'est ce port qui sera utilisé pour vérifier que l'adresse et le domaine sont cohérents.
Je vous laisse paramétrer cette redirection qui dépend beaucoup de la box que vous utilisez.
- Installation de certbot
Certbot a besoin d'un serveur web pour fonctionner, mais il est possible d'utiliser celui qui est intégré directement dans l'application.
C'est l'option que j'ai choisie, plus simple pour moi.
Dans tous les cas, suivez les instructions d'installation de certbot qui correspondent à votre système.
- Génération du certificat
J'ai utilisé la syntaxe suivante après bien des essais, certbot a beaucoup d'options et n'est pas simple à paramétrer.
Vous remplacerez évidemment domoticz.freeboxos.fr par votre propre nom de domaine.
Je vous recommande de faire un premier "essai à blanc", afin de vérifier que tout est en ordre avant de générer un vrai certificat ; le nombre d'essai est limité par sécurité, et si votre installation n'est pas correcte (redirection inopérante par exemple), vous aurez grillé un essai pour rien.
Au terme de quelques essais, il faut attendre plusieurs heures pour que la demande de certificat soit de nouveau possible pour le même domaine.
Pour faire ce run à blanc, ajoutez --dry-run à la syntaxe suivante :
Si tout se passe bien, vous obtiendrez à l'issue les félicitations attendues.Code : Tout sélectionner
sudo certbot certonly --standalone --preferred-challenges tls-sni-01,http,dns --duplicate -d domoticz.freeboxos.fr
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for domoticz.freeboxos.fr
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/domoticz.freeboxos.fr/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/domoticz.freeboxos.fr/privkey.pem
Your cert will expire on 2017-11-25. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Si tel est le cas et que vous avez fait un run à blanc, re-soumettez la même commande sans --dry-run cette fois-ci.
- Constitution du certificat pour Domoticz
Nous allons maintenant assembler le certificat qui servira à Domoticz, sans altérer celui qui est livré d'origine.
Nous allons donc simplement écrire ce certificat sous un nouveau nom.
Sur la machine qui a créé le certificat, créez un répertoire domoticz dans votre HOME :
Puis assemblez les certificats :[/size]Code : Tout sélectionner
mkdir ~/domoticz
(Remplacez domoticz.freeboxos.fr par votre propre domaine dans le code suivant)
Ce certificat pourrait fonctionner, mais Domoticz va rouspéter s'il ne trouve pas une partie Diffie–Hellman dedans.Code : Tout sélectionner
sudo cat /etc/letsencrypt/live/domoticz.freeboxos.fr/privkey.pem > ~/domoticz/cert_domoticz.pem sudo cat /etc/letsencrypt/live/domoticz.freeboxos.fr/fullchain.pem >> ~/domoticz/cert_domoticz.pem
Vous trouvez alors ceci dans le log :Error: [web:443] missing SSL DH parameters from file /home/pi/domoticz/cert_domoticz.pem
Pour générer cette partie, utilisez openssl comme suit. Si vous n'avez pas openssl il est toujours temps de l'installer.
Cette étape peut être très longue si votre machine n'est pas très puissante.Code : Tout sélectionner
openssl dhparam -out ~/domoticz/dhparam.pem 4096
Finalement, on peut maintenant finaliser le certificat :
Si vous avez utilisé certbot sur une machine différente de celle qui supporte Domoticz, il vous faudra transporter votre certificat vers la machine qui fait tourner Domoticz.Code : Tout sélectionner
cat ~/domoticz/dhparam.pem >> ~/domoticz/cert_domoticz.pem
- Mise en place du certificat sur la machine Domoticz
Copiez le certificat dans le répertoire de domoticz, celui qui est livré d'origine est là et s'appelle server_cert.pem.
Arrêtez domoticz.
Ensuite, modifiez le fichier de lancement de domoticz (dans /etc/init.d) pour y ajouter la ligne suivante dans les paramètres de lancement :Code : Tout sélectionner
sudo service domoticz.sh stop
Rechargez le script :Code : Tout sélectionner
DAEMON_ARGS="$DAEMON_ARGS -sslcert /home/pi/domoticz/cert_domoticz.pem"
Puis redémarrez Domoticz :Code : Tout sélectionner
sudo systemctl daemon-reload
Si tout se passe bien, vous aurez le message suivant dans le log au démarrage de domoticz :Code : Tout sélectionner
sudo service domoticz start
[/size]WebServer(SSL) started on address: :: with port 443
Pour vérifier, connectez-vous à https://<votre domaine> après avoir vidé le cache de votre navigateur et supprimé l'exception si vous l'aviez enregistrée.
Si vous avec eu la patience de lire ce tuto jusqu'ici, je vous en remercie, et pensez à supprimer ou désactiver la redirection du port 80 sur votre box, elle ne sera plus nécessaire avant le renouvellement de votre certificat, dans 3 mois.
C'est à faire avec certbot (certbot renew) et je ne l'ai pas encore utilisé.
A suivre donc.
Je précise également que le domaine domoticz.freeboxos.fr ne m'appartient pas et sert ici d'illustration.