Activez le HTTPS sur votre box Jeedom !

Bonjour à tous !

Aujourd’hui, avant d’attaquer une série d’articles sur les interactions, nous allons installer un certificat https sur notre Jeedom !

 

Vous allez me dire « Le https, on s’en moque, j’ai un mot de passe sécurisé avec des Majuscules, Minuscules, Chiffres, etc etc ! »

Hé bin, non, le mot de passe sert à rien si on transfert les données en clair sur Internet !

Nous allons donc installer un certificat sur notre petite box !

Préparation

On ouvre le port 443 du routeur / box internet afin de rendre accessible Jeedom depuis l’extérieur.

Installation des dépendances

Allez, c’est parti, on se connecte en SSH et on lance les commandes suivantes afin d’installer les dépendances 🙂

apt-get install -y git
cd /opt
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help

Préparation d’Apache

Une fois les dépendances installées, nous allons configurer Apache afin qu’il comprends qu’on veux sécuriser la connexion.

a2enmod ssl
a2ensite default-ssl.conf
service apache2 restart

Création du certificat

Voilà nos préparatifs sont finis, nous avons plus qu’à créer notre certificat. Bonne nouvelle pour nous, Let’s Encrypt nous donne un script qu’on a plus qu’à lancer 🙂

Il vous suffira uniquement d’avoir un nom de domaine. Vous pouvez en avoir un gratuitement avec DtDNS, No-ip, etc

Dans le champ Email, je vous conseille de mettre une adresse que vous consulter régulièrement afin de recevoir le mail de rappel pour générer le renouvellement du certificat.

/opt/letsencrypt/letsencrypt-auto --apache --email email@domaine.com -d domaine.com

 

Et voilà, votre Jeedom est paré pour le https !

Configuration Jeedom

Une dernière opération est requise, on se rends dans Jeedom.

On clique sur la roue dentée, « Configuration » puis sur « Réseaux ».

On note notre nom de domaine en accès externe et on sauvegarde.

Renouvellement

Pour le renouvellement du certificat, nous avons 2 possibilités !

La méthode manuelle

La première est d’attendre le mail qui nous invite a effectuer le renouvellement et on lance la commande ci-dessous.

/opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d mondomaine.fr

La méthode automatisé

Il suffit d’ajouter dans Crontab la commande de renouvellement. On relance Crontab en effectuant :

crontab -e

Puis on ajoute :

0 4 * * 0 /opt/letsencrypt/letsencrypt-auto --apache --renew-by-default -d mondomaine.fr

 

Et voilà, vous avez terminé notre petit guide pour sécuriser un minimum votre box Jeedom,

Je vous laisse installer Telegram et on se retrouve dans les prochains jours pour parler des Interactions !

31 commentaires

  1. MaT Répondre

    Bonjour,

    Merci pour ce tuto très complet.
    Je rencontre cependant un problème.
    Je coince à l’étape Création du certificat..
    Lorsque je note cette commande (en remplaçant par mon domaine et mon mail):
    /opt/letsencrypt/letsencrypt-auto –apache –email email@domaine.com -d domaine.com

    j’obtiens cette erreur :
    Failed authorization procedure. “mondomaine” urn:acme:error:connection :: The serve r could not connect to the client to verify the domain :: Timeout

    Si je me connecte sur mon domaine j’arrive pourtant bien sur mon Jeedom, pas de timeout

    Aurais tu une idée ?

    Merci

    • Guillaume Auteur de l’articleRépondre

      Hello mat, il semble que lets encrypt n’arrive pas à accéder au domaine, tu a bien ouvert et rediriger le port 443 de ta box internet sur ton jeedom ?

  2. MaT Répondre

    Merci pour ton retour rapide !
    Evidemment j’ai voulu faire le malin et étant donné que j’avais déjà ouvert le port 8080 j’ai zappé cette ligne…

    Je viens de le faire. (je pense l’avoir fait correctement puisque si je note
    http://mondomaine:443 je tombe bien sur mon jeedom.)

    Le message a désormais évolué :
    Failed authorization procedure. « mon domaine »: urn:acme:error:malformed :: The request message was malformed :: Server only speaks HTTP, not TLS

      • MaT Répondre

        Désolé, Je me suis sans doute mal exprimé,
        je voulais dire depuis mon navigateur si je note http://domain.fr cela fonctionne.
        (si je note https://domaine.fr cela ne fonctionne pas mais étant donné que la config n’est pas terminé ça me paraît logique)

        Le message d’erreur que je rencontre est toujours sur Putty lorsque je fais la commande
        /opt/letsencrypt/letsencrypt-auto –apache –email email@domaine.com -d domaine.com

        Failed authorization procedure. « mon domaine »: urn:acme:error:malformed :: The request message was malformed :: Server only speaks HTTP, not TLS

        Dans le doute suite à ta réponse j’ai tenté sans réussite :
        /opt/letsencrypt/letsencrypt-auto –apache –email email@domaine.com -d https://domaine.com

        • Guillaume Auteur de l’articleRépondre

          Le problème c’est que ton jeedom n’est pas accessible via le https donc le port 443.
          Si la redirection du port 443 est faite, regarde au niveau de la configuration apache, il faut activé un module et ajouter quelques lignes dans le fichier de configuration apache

          • MaT

            Pour moi la redirection est faite puisque je parviens à me connecter sur jeedom depuis l’extérieur en http avec le port 443. Par contre au niveau de la configuration apache j’avoue que je ne sais pas où chercher, ni quoi faire. Cela dépasse mes compétences

          • Guillaume Auteur de l’article

            Alors du coup, tu entre les commandes suivantes : a2enmod ssl a2ensite default-ssl.conf Ça va activer le plugin ssl. Tu redémarre apache avec la commande : service apache2 restart

            Tu devrais avoir un fichier du nom de 000-default-le-ssl.conf qui va se créer dans le répertoire /etc/apache2/sites-enabled/

            Avec cette configuration (tu peux contrôler en effectuant sudo nano /etc/apache2/sites-enabled/000-default-le-ssl.conf )  :

            <IfModule mod_ssl.c>
            <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
            ErrorLog /var/www/html/log/http.error
            SSLCertificateFile /etc/letsencrypt/live/MONDOMAINE/fullchain.pem
            SSLCertificateKeyFile /etc/letsencrypt/live/MONDOMAINE/privkey.pem
            Include /etc/letsencrypt/options-ssl-apache.conf
            ServerName MONDOMAINE
            </VirtualHost>
            </IfModule>

  3. TaG Répondre

    Hello,

    N’oublie pas d’éditer pour le renouvellement, c’est plus simple avec ce que je t’ai donné ce matin ;).

    TaG

  4. BenLim Répondre

    Pour moi aussi fingers in the noze !!!!!! presque décevant je pensais chercher un peu plus 🙂

  5. BenJ Répondre

    Hello,

    Super article, merci. Juste ce qu’il manquait sur mon Jeedom pour avoir quelque chose de complet.
    J’avais aussi sécurisé avec une clé publique/privée côté SSH pour mon Jeedom.

    Par contre, j’ai voulu éxécuter le script de renouvellement pour voir si OK et visiblement j’ai un problème sur le script que je curle.

    /usr/local/sbin/le-renew: ligne 46: bc : commande introuvable
    Checking expiration date for XXXXXXX.ddns.net…
    /usr/local/sbin/le-renew: ligne 50 : [: : nombre entier attendu comme expression
    The certificate for XXXXXX.ddns.net is about to expire soon. Starting renewal request…
    Requested domain is not a FQDN because it contains an empty label.
    Restarting Apache…
    Renewal process finished for domain XXXXXXX.ddns.net

    • Guillaume Auteur de l’articleRépondre

      Hello, oui c’est normal, tu essaye de renouveler ton certificat et comme il expire dans + de 30 jours ça bloque 🙂

      • Guillaume Auteur de l’articleRépondre

        Je devais justement faire le miens, voila ce que ca donne si tu est à moins de 30 jours 🙂

  6. Jacky Répondre

    bonjour,
    j’ai un nom de domaine créé avec dtdns.net sur une Livebox en IP dynamique et lorsque je demande de créer mon certificat voilà ce que j’ai comme erreur :
    An unexpected error occurred:
    There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for: dtdns.net

    apparemment Letsencrypt pose pb avec les sous domaine gratuit ?
    existe-t-il une solution pour détourner ce pb ?

    • Guillaume Auteur de l’articleRépondre

      Hello, non y a pas de soucis avec les domaines gratuits, cependant il faut attendre un peu car lets encrypt bloque si il reçoit beaucoup de demandes pour le domaine dtdns.net.
      Retente l’opération demain ou essaye de prendre un autre domaine disponible chez dtdns 😉

  7. Jacky Répondre

    Merci Guillaume j’ai pris un autre domaine chez dtdns et ça fonctionne.

    Maintenant je voudrais utiliser la 3ème méthode pour renouveler le certificat automatiquement mais je voudrais mettre le code « 0 4 * * 0 /opt/letsencrypt/certbot-auto renew » directement dans Jeedom au niveau du plugin « script » comment procéder ?

  8. Jacky Répondre

    désolé mais que veux-tu dire avec crontab ?
    qu’il faut mettre la cde complète « 0 4 * * 0 /opt/letsencrypt/certbot-auto renew » dans le champ « requête » de la cde du script au niveau du plugin ?

  9. Jacky Répondre

    ah ! ok
    il ne faut pas mettre la cde sudo avant ?
    ensuite une fois le fichier modifié il faut relancer quelque chose pour cela soit pris en compte ?

    • Guillaume Auteur de l’articleRépondre

      Non tu n’a pas besoin de mettre sudo, et tu n’a pas besoin de relancer quoi que ce soit 😉

  10. Jacky Répondre

    alors un grand merci pour ton aide, je verrais bien dans 90 jours si le renouvellement c’est bien effectué !

  11. pontaeri Répondre

    Bonjour, Merci pour le tuto, cependant j’ai un problème pour aller au bout,quand j’essai d’obtenir un certificat j’ai l’erreur « certbot: error: unrecognized arguments: –d « mon nom de momaine »
    avez vous une idée? est ce que ca vient du fait que le nom de domaine vient de mon nas Synology?
    Merci

Laisser un commentaire !