Redirection HTTPS et plugin BLEA

Bonjour à tous,

Je suis nouveau sur ce forum car je suis aussi un tout nouveau Jeedomien !

Depuis quelques semaines j’ai réalisé mon installation toute fraiche de Jeedom sur mon RPi, en suivant un certain nombre de tutos dont celui-ci permettant de sécuriser la connexion en utilisant HTTPS et SSL : Comment sécuriser l'accès à Jeedom en HTTPS avec un certificat SSL gratuit

Suite à ce tuto, j’ai aussi décidé de demander à apache de réécrire les requêtes HTTP en requêtes HTTPS vers mon domaine pour lequel je dispose du certificat. Ceci en activant le module rewrite de apache :

sudo a2enmod rewrite

et en ajoutant les lignes suivantes au fichier /etc/apache2/sites-available/000-default.conf

RewriteEngine On
RewriteCond %{SERVER_PORT} 80 [NC,OR]
RewriteCond %{HTTP_HOST} ^mon.domaine.com [NC]
RewriteRule ^(.*)$ https://mon.domaine.com/$1 [R=301,L]

Lorsque j’ai voulu associer mes Nut à ma RPi avec le plugin BLEA (super plugin soit dit en passant merci aux devs), je n’ai pas pu lancer de scan, et dans les logs apparaissaient les lignes suivantes :

[2020-01-25 23:05:07.398][DEBUG] : http://127.0.0.1:80 "GET /plugins/blea/core/php/jeeBlea.php?apikey=T3EC3QGxb6ueFPcAehGV260bL9X4uOQe HTTP/1.1" 302 276
[2020-01-25 23:05:07.404][DEBUG] : Starting new HTTPS connection (1): 127.0.0.1:443
/usr/lib/python3/dist-packages/urllib3/connectionpool.py:849: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning)

Je n’avais pas pensé au fait que certains plugin pourraient bien avoir besoin de réaliser des requêtes HTTP en local et donc ne fonctionneraient potentiellement plus avec la réécriture en HTTPS que j’avais mise en place…
Du coup il faut penser à exclure de la règle de réécriture les requêtes locales et voici donc ce qu’il faut écrire dans le fichier 000-default.conf (c.f. mod rewrite - Apache RewriteRule - everything except localhost and loopback - Stack Overflow)

RewriteEngine On
RewriteCond %{HTTP_HOST} !^localhost [NC]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} mon.domaine.com [NC]
RewriteRule ^/?(.*) https://mon.domaine.com/$1 [R=301,L]

Premier post un peu long mais j’espère que ça pourra être utiles à certains d’entre vous qui ont mis en place le HTTPS et SSL…

Bonne soirée à tous et au plaisir !

2 « J'aime »

C’est drôle parce que pour moi, BLEA fonctionne avec https:/127.0.0.1 avec le même avertissement.

Dans mon cas, je ne réécris pas, ce que j’ai, c’est le dns pour https dans le réseau local ainsi que dans le réseau externe, puis un dns override dans le firewall.

Jusqu’à présent, je n’ai jamais eu de problème, à l’exception de ces avertissements. Le seul inconvénient est que le plugin Squeezebox ne fonctionne pas avec la fenêtre modale en V4 en v3 si l’on peut dire qu’il ouvre l’élément dangereux.

Salu2
Bull

Bonjour,

Effectivement c’est étonnant.

J’avoue que je ne suis pas allé chercher plus loin, lorsque j’ai vu que ma modification fonctionnait j’ai supposé que le problème venait de là…

Je pense que la différence c’est que moi lorsque de je réécrit les requêtes HTTP en HTTPS, je remplace automatiquement le host par « mon.domaine.com » donc je « passe forcément en externe » dans le sens ou je ne redirige pas simplement http:/127.0.0.1" vers https:/127.0.0.1 mais vers https:/mon.domaine.com

Ce qui veut dire que ma requête locale devient une requête distante, et j’imagine que ça peut perturber le fonctionnement du plugin…mais je ne suis pas un expert réseau !

Pour ce qui est de Squeezebox je ne connais pas…

En tout cas, si quelqu’un à une idée précise de ce qu’il se passe je suis curieux de comprendre.

Bonne journée à tous.

A+

C’est un peu dommage du point de vue latence non ? Car au lieu de requêter sur ton périph (ton RPI) en local, ton paquet fait trois fois le tour du pays avant de revenir « frapper à ta porte ». Donc la réactivité de ton installation locale est dépendante de ton FAI.

Pour illustrer :
Un objet connecté à ton réseau local (un teleinfo par exemple) requête vers ton RPI, la requête est de l’ordre de la milliseconde (entre 1 et 2ms environ). Ta règle de redirection rebalance ta requête à travers internet => Tu reperds 2ms vers ton routeur, puis entre 25 et 80ms (en moyenne et en fonction de la qualité de ligne) entre ton routeur => dslam => DNS free => dslam => routeur. Et enfin ton RPI/Jeedom doit traiter la requête, l’analyser et lancer tes scénario/actions (dépendant de ton matos hardware ce coup-ci). Et si pour une raison X ou Y, ta connexion internet est instable à ce moment précis, ton action risque de durer encore plus longtemps. Alors que si tu gardes tes requêtes internes en interne, tu restera dans l’ordre des 10ms de temps de réaction.

Cas encore plus problématique, si tu n’as plus internet, toutes tes requêtes http internes vers ton RPI seront vaines :slight_smile:. C’est con :sweat_smile:

Si j’étais toi, je chercherai à ne rediriger que le trafic externe vers du https, et pas TOUT le trafic (interne inclus).

Après il y a une autre solution simple…

Ajouter une condition du genre dans apache
RewriteCond %{REMOTE_ADDR} !=192\.168\.1\.[1-255]

Et modifier /etc/hosts pour y ajouter la correspondance domaine/ip

Bonjour Dreaky,

Effectivement tu as totalement raison et du coup en résolvant mon problème j’ai aussi corrigé ce gros défaut… Maintenant dans les règles de réécriture des requêtes je ne réécrit pas les requêtes locales (c.f. Les lignes RewriteCond !^localhost et !^127.0.0.1)

Mon message décrivait le fonctionnement de mes anciennes règles de réécriture qui dans le même temps provoquaient un mauvais fonctionnement du plugin BLEA.

Là tout fonctionne bien et je n’ai pas de latence, mais merci pour cette précision à laquelle je n’avais pas vraiment pensé !

Bonne soirée à tous et merci encore pour ces explications.