jMQTT et paramètres de sécurité broker

Bonjour à tous,

Également admirateur silencieux avec la même demande que rennais35000.

Bon travail à vous et bonne fêtes de fin d’année.

1 « J'aime »

Bonjour à tous,
Je constate en effet un souci moi aussi en mqtts, je suis en train d’instrumentaliser le code pour en savoir plus.
Mais ce n’est probablement pas lié aux \n (ou \r), ils sont supportés par la lib SSL.
Bad

Alors il y a un plomb dans l’envoi de la clé privée du certificat client au démon…

L’erreur est ici :

Il suffit donc de remplacer :
if ($params['tlsclicert'] == '' || $params['tlsclikey'] = '') {
par
if ($params['tlsclicert'] == '' || $params['tlsclikey'] == '') {
dans core/class/jMQTT.class.php

@oracle7, peux-tu check si ça corrige le problème pour toi stp ?

Avec toutes mes excuses

EDIT : Suite aux suggestions de @oracle7, il sera prochainement possible d’uploder les certificats :


Et de les drag & drop :

(dispo en stable depuis le 24/12/2022)

1 « J'aime »

Bonjour,

Désolé pour la mauvaise piste (\n). Par contre il a aussi un souci en mettant juste une ac privée (param tlsca). La bibliothèque paho ne trouve pas le certificat.

@tomdom
Bonjour,
ATTENTION, pour moi il y aurait en fait deux types d’erreurs dans notre affaire qui se recoupent en partie. Mais je peux me tromper … :thinking:
Je m’explique :

Point 1 :

Je te confirme ce constat. De plus, il semblerait aussi qu’après le C/C du certificat CA (épuré sous éditeur de texte externe) dans le plugin, si le certificat comporte de caractères slash « / » tout court, ces caractères soient abusivement interprétés comme des « fin de ligne » « /n » lors du Coller et provoquent un retour à la ligne dans la zone du plugin lors de l’affichage. Cà ce n’est pas normal !!! Il y a sûrement un autre problème avec l’UI Jeedom à ce niveau. Ton avis STP ?
Attention toute fois, si on essaie de supprimer manuellement ce pseudo « fin de ligne » existant dans le plugin, cela supprime en fait le caractère « / », ce qui à mon sens dénature/modifie le certificat. Dans tous les cas, même si on ne supprime pas ces derniers, le certificat n’est tout de même pas reconnu valide et la connexion sécurisée ne s’établie pas. C’est mon constat.

Point 2:
J’ai donc exécuté la reqête SQL comme demandé.

1 - J’ai extrait du résultat la partie de chaine correspondante au certificat CA (-----BEGIN CERTIFICATE-----xxxxxxxxxxxxxxxxxxxxxxxxx-----END CERTIFICATE-----) → Chaine 1.
2 - J’ai ensuite épuré le certificat CA de ses « /n » pour le ramener sur une seule ligne → Chaine 2

3 - J’ai comparé ensuite avec « UltraCompare » les deux chaines 1 et 2.
Voici un extrait des différences constatées :
Chaine 1 :

DVqWH\/k7hLTDGSFNJ1PO2KgNpU7U06ujaio478xiDBErljcl0GnNMmUn6mIOgNgAdbxac\/2dbPlCH8

Chaine 2 :

DVqWH/k7hLTDGSFNJ1PO2KgNpU7U06ujaio478xiDBErljcl0GnNMmUn6mIOgNgAdbxac/2dbPlCH8

Dans la partie droite, apparaissent en rouge (les différences) les anti slash "" présents en plus dans le résultat de la requête SQL.

On constate donc que dans la Chaine 1 tous les caractères slash « / » sont "échappés systématiquement avec un caractère "" anti slash, donc qui vient en plus dans le certificat enregistré dans la BdD Jeedom.
C’est pareil pour le certificat client et sa clé privée présents dans le résultat de la requête SQL.

Dans la copie d’écran suivante on voit bien ces caratèresanti slash "" au début de chaque ligne dans le bloc résultat de requête SQL :

Voilà donc mes constats, en espérant que cela t’inspire …
PS : Au passage les caractères antislash ne sembles pas s’afficher au final dans le post. Ilsa s’affiche uniquement dans l’éditeur lors de la rédaction.

@rennais35000 @freeddoo
Au risque de vous décevoir tous les deux, je ne suis pas sûr que ce problème mérite un TUTO spécifique.
Vous l’aurez compris, on essaie ici de résoudre un disfonctionnement du plugin lié à la bonne prise en compte des certificats CA, Client et Clé privée client afin que la sécurisation des échanges MQTT soit parfaitement efficiente.
Si tout était bien, il n’y aurait juste qu’à renseigner l’UI du plugin avec les informations des certificats, c’est tout. Donc en soit la documentation du plugin me parait suffisante à ce niveau (même si elle est toujours perfectible :crazy_face:). Il n’y a rien de compliqué en soit.
Cordialement
oracle7 :wink:

@Bad @tomdom
Bonjour,

J’ai donc corrigé le fichier en question comme indiqué (ajout signe =) et relancé le démon jQMTT.
Accessoirement, chez moi c’est la ligne 1848. Il me manquerait 5 lignes dans le fichier ???
BINGO !!! :star_struck: :star_struck: :star_struck: Le client jMQTT se connecte sur le port 8883 avec tous les certificats (C/C normalement sans supprimer les « /n »).
Le log jMQTTd :

[2022-12-20 14:12:30]INFO : Client MQTT déconnecté du Broker
[2022-12-20 14:12:30]INFO : Client MQTT déconnecté du Broker
[2022-12-20 14:12:34]INFO : Démarrage du Client MQTT
[2022-12-20 14:12:34]INFO : Client MQTT connecté au Broker
[2022-12-20 14:12:34]INFO : Souscription au topic d'Interaction 'jeedom/interact'
[2022-12-20 14:12:34]INFO : Le Broker Mosquitto_RPI-OUTILS s'inscrit au topic 'jeedom/interact' avec une Qos de 1
[2022-12-20 14:12:34]INFO : Le Broker Mosquitto_RPI-OUTILS s'inscrit au topic 'jeedom/interact/advanced' avec une Qos de 1
[2022-12-20 14:12:34]INFO : Souscription au topic API 'jeedom/api'
[2022-12-20 14:12:34]INFO : Le Broker Mosquitto_RPI-OUTILS s'inscrit au topic 'jeedom/api' avec une Qos de 1

ENORME MERCI à toi @Bad et merci aussi @tomdom pour sa patience avec tous mes « cela ne marche pas » à répétitions :crazy_face:

Affaire résolue maintenant. :hugs: :hugs: :hugs:
Y-a plus qu’à publier une mise à jour du plugin…

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.