[Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Chrominator
Messages : 411
Enregistré le : 19 déc. 2015, 07:29

[Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Chrominator » 02 sept. 2017, 09:30

Le certificat livré avec Domoticz est auto-signé, ce qui produit des avertissements lorsqu'on se connecte à notre serveur via le protocole https et le port 443 car il n'est pas reconnu par une autorité de certification.
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


Screenshot - 02_09_2017 , 06_41_56.png
Screenshot - 02_09_2017 , 06_41_56.png (103.61 Kio) Vu 12118 fois
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
Il vous faudra aussi pouvoir accéder à la ligne de commande de votre serveur Domoticz, avoir l'autorisation d'installer des applications (certbot et openssl) et être à l'aise avec Linux et le paramétrage des redirections de ports.
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.
  1. 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.

    1. 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.
      Screenshot - 02_09_2017 , 07_13_08.png
      Screenshot - 02_09_2017 , 07_13_08.png (11.48 Kio) Vu 12118 fois
      Dans le mode avancé, cliquez sur l'icône Nom de domaine
      Screenshot - 02_09_2017 , 07_14_51.png
      Screenshot - 02_09_2017 , 07_14_51.png (16.47 Kio) Vu 12118 fois
      Dans la boite de dialogue qui vient de s'ouvrir, cliquez sur Ajouter un nom de domaine
      Screenshot - 02_09_2017 , 07_18_12.png
      Screenshot - 02_09_2017 , 07_18_12.png (13.56 Kio) Vu 12118 fois
      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.
      Screenshot - 02_09_2017 , 07_22_00.png
      Screenshot - 02_09_2017 , 07_22_00.png (11.03 Kio) Vu 12118 fois
      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.
      Screenshot - 02_09_2017 , 07_28_08.png
      Screenshot - 02_09_2017 , 07_28_08.png (17.97 Kio) Vu 12118 fois
      [/size]
    2. 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

      Screenshot - 02_09_2017 , 07_44_24.png
      Screenshot - 02_09_2017 , 07_44_24.png (13.08 Kio) Vu 12118 fois
      Lisez attentivement ce qui suit, puis inscrivez le nom de votre domaine dans la partie reverse DNS et validez.
      Screenshot - 02_09_2017 , 07_46_59.png
      Screenshot - 02_09_2017 , 07_46_59.png (17.05 Kio) Vu 12118 fois
      [/size]
  2. 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.
    1. 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.

    2. 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 :

      Code : Tout sélectionner

      sudo certbot certonly --standalone --preferred-challenges tls-sni-01,http,dns --duplicate -d domoticz.freeboxos.fr
      Si tout se passe bien, vous obtiendrez à l'issue les félicitations attendues. ;)
      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.


    3. 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 :

      Code : Tout sélectionner

      mkdir ~/domoticz
      Puis assemblez les certificats :[/size]
      (Remplacez domoticz.freeboxos.fr par votre propre domaine dans le code suivant)

      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
      
      Ce certificat pourrait fonctionner, mais Domoticz va rouspéter s'il ne trouve pas une partie Diffie–Hellman dedans.
      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.

      Code : Tout sélectionner

      openssl dhparam -out ~/domoticz/dhparam.pem 4096
      Cette étape peut être très longue si votre machine n'est pas très puissante.

      Finalement, on peut maintenant finaliser le certificat :

      Code : Tout sélectionner

      cat ~/domoticz/dhparam.pem >> ~/domoticz/cert_domoticz.pem
      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.

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

      Code : Tout sélectionner

      sudo service domoticz.sh stop
      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

      DAEMON_ARGS="$DAEMON_ARGS -sslcert /home/pi/domoticz/cert_domoticz.pem"
      Rechargez le script :

      Code : Tout sélectionner

      sudo systemctl daemon-reload
      Puis redémarrez Domoticz :

      Code : Tout sélectionner

      sudo service domoticz start
      Si tout se passe bien, vous aurez le message suivant dans le log au démarrage de domoticz :
      WebServer(SSL) started on address: :: with port 443
      [/size]
Votre accès à Domoticz est maintenant sécurisé, tous les échanges entre votre navigateur et votre serveur sont cryptés.
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. :geek:

Je précise également que le domaine domoticz.freeboxos.fr ne m'appartient pas et sert ici d'illustration.
Modifié en dernier par Chrominator le 07 janv. 2019, 01:46, modifié 1 fois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


patrice
Messages : 1627
Enregistré le : 22 sept. 2014, 21:51

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par patrice » 02 sept. 2017, 18:21

Bonjour
Super boulot !
Merci du partage
Raspberry Pi model B+, RFXComm,8 interrupteurs Chacon, 5 ds180b 1-Wire, 3 douilles Chacon, 1 contact de porte Chacon, 1 module variateur,module emetteur 54700, Aeon Stick Z-wave, 1 MultiSensor Aeon, accés à distance.
aka thegritche@domoticz forum

Wospi
Messages : 107
Enregistré le : 21 avr. 2017, 08:54

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Wospi » 03 sept. 2017, 08:40

Bonjour,
Mon FAI ne me permet pas de créer un nom de domaine. La seule chose que j'ai c'est une adresse par dyndns. J'ai testé plusieurs méthodes pour obtenir un certificat (j'en ai planté des Jessies...) mais sans succès.
L'erreur qui revient c'est que je ne peux pas créer de certificat à partir d'une adresse provenant de dyndns.
Avec cette méthode, est-il possible de créer un certificat avec une adresse provenant de dyndns ?

Autre question, quand je changerai de FAI (ben oui... Je ne vais pas rester éternellement chez un FAI qui ne m'offre par le nom de domaine gratuit), faut-il refaire toute la manip ?

Chrominator
Messages : 411
Enregistré le : 19 déc. 2015, 07:29

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Chrominator » 03 sept. 2017, 08:57

A propos de la question de dyndns, je ne sais pas répondre, je pense qu'il faut essayer.
Je n'ai pas vu cette limitation dans Let's Encrypt mais il est possible que trop de certificats ait été émis pour les domaines de dyndns;
Je l'ai constaté avec free.fr, impossible d'obtenir un certificat en raison d'un trop grand nombre déjà délivré sur ce domaine.

De mon point de vue, je ne vois pas non plus comment l'opération pourrait planter la machine;
le résultat tient en quelques fichiers sur le système.

Et si tu changes de FAI, comme ton nom de domaine est indépendant de son infrastructure, le certificat sera toujours valide.
Il faudra seulement le renouveler tous les 3 mois.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wospi
Messages : 107
Enregistré le : 21 avr. 2017, 08:54

Re: RE: Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Wospi » 03 sept. 2017, 14:40

Chrominator a écrit :A propos de la question de dyndns, je ne sais pas répondre, je pense qu'il faut essayer.
Je n'ai pas vu cette limitation dans Let's Encrypt mais il est possible que trop de certificats ait été émis pour les domaines de dyndns;
Je l'ai constaté avec free.fr, impossible d'obtenir un certificat en raison d'un trop grand nombre déjà délivré sur ce domaine.

De mon point de vue, je ne vois pas non plus comment l'opération pourrait planter la machine;
le résultat tient en quelques fichiers sur le système.

Et si tu changes de FAI, comme ton nom de domaine est indépendant de son infrastructure, le certificat sera toujours valide.
Il faudra seulement le renouveler tous les 3 mois.
Merci Chrominator,
Je vais de nouveau me pencher sur le sujet, même si mes déboires avec Let's encrypt m'ont quelque peur refroidis.

landaisbenj
Messages : 695
Enregistré le : 12 mars 2017, 19:24

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par landaisbenj » 04 sept. 2017, 22:53

Ouha super. J'avais créé mon dns perso mais je n'avais jamais penser a revenir sur le certificat (aucune utilité juste pour acceder a la free).

Merci beaucoup pour ce partage qu'il est vraiment clair. Je test ca des que possible.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway

Chrominator
Messages : 411
Enregistré le : 19 déc. 2015, 07:29

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Chrominator » 09 déc. 2017, 19:10

Pour renouveler le certificat :
  • S'assurer que le port 443 est ouvert sur la box et qu'il pointe vers la machine qui acquiert le certificat.
  • Regénérer un certificat. --dry-run permet comme d'habitude de vérifier que tout va bien.

    Code : Tout sélectionner

    sudo certbot renew --dry-run
  • Si OK, on relance sans le --dry-run.

    Code : Tout sélectionner

    sudo certbot renew
    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    
    -------------------------------------------------------------------------------
    Processing /etc/letsencrypt/renewal/domoticz.freeboxos.fr.conf
    -------------------------------------------------------------------------------
    Cert is due for renewal, auto-renewing...
    Plugins selected: Authenticator standalone, Installer None
    Renewing an existing certificate
    Performing the following challenges:
    tls-sni-01 challenge for domoticz.freeboxos.fr
    Waiting for verification...
    Cleaning up challenges
    
    -------------------------------------------------------------------------------
    new certificate deployed without reload, fullchain is
    /etc/letsencrypt/live/domoticz.freeboxos.fr/fullchain.pem
    -------------------------------------------------------------------------------
    
    -------------------------------------------------------------------------------
    
    Congratulations, all renewals succeeded. The following certs have been renewed:
      /etc/letsencrypt/live/domoticz.freeboxos.fr/fullchain.pem (success)
    -------------------------------------------------------------------------------
    
  • Ensuite on recrée le certificat complet en concaténant les petits morceaux de droite et de gauche.

    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
    cat ~/domoticz/dhparam.pem >> ~/domoticz/cert_domoticz.pem
  • On redémarre domoticz.

    Code : Tout sélectionner

    sudo service domoticz.sh restart
Ne pas oublier de désactiver la redirection du port 443 sur la box si elle est devenue inutile.
Modifié en dernier par Chrominator le 11 mai 2018, 10:32, modifié 1 fois.

alpin38
Messages : 47
Enregistré le : 02 juil. 2015, 11:14

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par alpin38 » 24 déc. 2017, 12:40

Salut
j'essaye de suivre ton tuto , mais je bloque au moment de générer la clé avec la cde

sudo certbot certonly --standalone --preferred-challenges tls-sni-01,http,dns --duplicate -d xxxxxx.freeboxos.fr --dry-run

mais ca me retourne l'erreur suivante a chaque fois
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for xxxxxx.freeboxos.fr
Cleaning up challenges
Problem binding to port 443: Could not bind to IPv4 or IPv6.
j'ai fais la manip egalement sur les dns de free (hiers soir ) donc ca fais 12 heures environ

aurrait tu une idée

merci

Chrominator
Messages : 411
Enregistré le : 19 déc. 2015, 07:29

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par Chrominator » 24 déc. 2017, 19:09

Est-ce que tu as établi une redirection du port 443 sur ta box ver l'IP de la machine sur laquelle tu exécutes certbot ?
certbot contacte un serveur et attend une réponse, si la redirection n'existe pas ça ne fonctionne pas.

alpin38
Messages : 47
Enregistré le : 02 juil. 2015, 11:14

Re: [Tuto] Obtenir un certificat valide pour Domoticz sous Linux ou Mac

Message par alpin38 » 25 déc. 2017, 20:33

Bsr

oui bien sur je redirige toutes les ip /port 443 vers mon serveur port 443 en tcp et udp
de plus , l’accès a domotics en https fonctionne depuis mon ip publique

c'est bo, je viens de trouver mon probleme , domoticz tournais et utilisais le port 443
un sudo service domoticz stop et c'est ok

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre