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 securisé 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 3 possibilités !

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

 

Soit la méthode automatisé découverte par TaG, qu’on va mettre en place 🙂

On crée un fichier vide avec la commande Nano

nano /bin/certletsencryptrenew.sh

Puis on note les lignes suivantes :

curl -L -o /usr/local/sbin/le-renew http://do.co/le-renew
chmod +x /usr/local/sbin/le-renew
le-renew domaine.fr

Le script va interroger la date d’expiration du certificat et le renouvellera automatiquement si il expire dans moins de 30 jours.

Afin de lancer le script, on va le rendre exécutable en lancer la commande chmod

chmod +x /bin/certletsencryptrenew.sh

Et ensuite, on va le déclencher tous les dimanches à 4h du matin. On va donc utiliser Crontab

On l’ouvre avec

crontab -e

Puis on mets tout en bas du fichier :

0 4 * * 0 /bin/certletsencryptrenew.sh

On enregistre puis on ferme.

 

La troisième est une nouvelle méthode, qui est plus simple d’application.

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/certbot-auto renew

 

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 !

17 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 🙂

Laisser un commentaire !