jMQTT et paramètres de sécurité broker

Eh bien NON :

Il y a bien un problème avec la version sécurisée et ce port 8883 qui n’est pas pris en compte par jMQTT …

Il y a quoi dans les logs en mode débug ?
À partir de la machine Jeedom, que donne la commande nc -v RPI-OUTILS 8883

Édit : toujours à partir de la machine Jeedom, openssl s_client -showcerts -connect RPI-OUTILS:8883 < /dev/null

Log jMQTT-Mosquitto_RPI-OUTILS :

[2022-12-19 16:56:18]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:56:33]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:56:48]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:57:02]INFO : Démarrage du Client MQTT
[2022-12-19 16:57:02]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:57:07]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:57:17]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:57:32]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:57:47]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:58:02]INFO : Démarrage du Client MQTT
[2022-12-19 16:58:02]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:58:07]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:58:17]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:58:32]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:58:47]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:59:02]INFO : Démarrage du Client MQTT
[2022-12-19 16:59:02]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:59:07]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:59:17]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:59:32]INFO : Client MQTT déconnecté du Broker
[2022-12-19 16:59:47]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:02]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:03]INFO : Démarrage du Client MQTT
[2022-12-19 17:00:03]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:08]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:18]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:33]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:00:48]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:01:03]INFO : Démarrage du Client MQTT
[2022-12-19 17:01:03]INFO : Client MQTT déconnecté du Broker
[2022-12-19 17:01:04]INFO : Client MQTT déconnecté du Broker

LOg jMQTTd :

[2022-12-19 16:58:02,754]ERROR Client466       MainThread           start() : Fatal TLS Certificate import Exception, this connection will most likely fail!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 218, in start
self.mqttclient.tls_set(ca_certs=certs, cert_reqs=reqs, certfile=cert, keyfile=key)
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 796, in tls_set
context.load_cert_chain(certfile, keyfile, keyfile_password)
ssl.SSLError: [SSL] PEM lib (_ssl.c:3845)
[2022-12-19 16:58:02,758]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:58:02,759]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:58:02,801]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:58:02,847]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:58:07,764]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:58:07,765]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:58:07,858]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:58:07,931]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:58:17,770]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:58:17,771]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:58:17,848]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:58:17,887]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:58:32,776]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:58:32,777]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:58:32,812]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:58:32,893]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:58:47,783]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:58:47,783]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:58:47,822]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:58:47,890]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:58:51,646]DEBUG Main            MainThread            h_hb() : Jeedom sent a Heartbeat.
[2022-12-19 16:59:02,571]INFO Main            MainThread     h_newClient() : Client already exists for Broker 466. Restarting it.
[2022-12-19 16:59:02,785]DEBUG Client466       MainThread            stop() : jMqttClient ended
[2022-12-19 16:59:02,788]ERROR Client466       MainThread           start() : Fatal TLS Certificate import Exception, this connection will most likely fail!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 218, in start
self.mqttclient.tls_set(ca_certs=certs, cert_reqs=reqs, certfile=cert, keyfile=key)
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 796, in tls_set
context.load_cert_chain(certfile, keyfile, keyfile_password)
ssl.SSLError: [SSL] PEM lib (_ssl.c:3845)
[2022-12-19 16:59:02,792]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:59:02,793]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:59:02,822]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:59:02,867]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:59:07,798]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:59:07,798]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:59:07,877]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:59:07,954]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:59:17,803]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:59:17,804]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:59:17,872]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:59:17,912]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 16:59:32,808]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 16:59:32,809]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 16:59:32,841]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 16:59:32,911]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]

Sur la machine Jeedom (RPI4B avec Raspios lite arm64 Index of /raspios_lite_arm64/images/raspios_lite_arm64-2022-09-26

1 -

pi@RPI-JDOM:/etc $ nc -v RPI-OUTILS 8883
-bash: nc : commande introuvable
pi@RPI-JDOM:/etc $

2 -

pi@RPI-JDOM:/etc $ openssl s_client -showcerts -connect RPI-OUTILS:8883 < /dev/null
CONNECTED(00000003)
Can't use SSL_get_servername
depth=1 CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA
verify error:num=19:self signed certificate in certificate chain
verify return:1
depth=1 CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA
verify return:1
depth=0 C = FR, ST = France, L = Ville, O = Maeva56, OU = Maeva56_SRV, CN = RPI-OUTILS, emailAddress = email@fai.tld
verify return:1
---
Certificate chain
 0 s:C = FR, ST = France, L = Ville, O = Maeva56, OU = Maeva56_SRV, CN = RPI-OUTILS, emailAddress =email@fai.tld
   i:CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
 1 s:CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA
   i:CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
---
Server certificate
subject=C = FR, ST = France, L = Ville, O = Maeva56, OU = Maeva56_SRV, CN = RPI-OUTILS, emailAddress = email@fai.tld

issuer=CN = ndd.fr, ST = France, C = FR, emailAddress = email@fai.tld, O = Maeva56, OU = Maeva56_CA

---
No client certificate CA names sent
Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:ECDSA+SHA1:RSA+SHA224:RSA+SHA1
Shared Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3761 bytes and written 393 bytes
Verification error: self signed certificate in certificate chain
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 4096 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 19 (self signed certificate in certificate chain)
---
548318865856:error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required:../ssl/record/rec_layer_s3.c:1544:SSL alert number 116
pi@RPI-JDOM:/etc $

Ce que je ne comprend pas c’est que cela ne passe pas avec jMQTT alors que la connexion sécurisée s’établit bien que ce soit avec MQTT explorer et avec le module MQTT intégré à HomeAssistant. Tout cela avec des certificats créés en suivant la même procédure pour le serveur MQTT et les clients Jeedom et HA. Précision, avec MQTT explorer je me connecte avec les paramètres que j’utilise pour Jeedom.

Tu as quelle version du plugin ?

image

En regardant en détail le code source du plugin (et ton log), l’erreur se produit car le plugin « pense » qu’il y a un certificat client (mais normalement tu as désactivé cette partie)

Bah NON justement la case client est bien cochée et le certificat et sa clé privée sont bien renseignés, du coup je dirais que le plugin ne traite pas bien la présence du certificat client. Je me trompe peut-être ?

Il me semble que depuis un moment, je t’avais demandé si tu arrivais à te connecter sans certificat client …
Car le problème est justement là depuis là depuis le début.
Donc soit il y a un problème avec le copier/coller, soit avec le mot de passe de la clé privée La bibliothèque qu’utilise le plugin considère ton triptyque Certficat/Clé/Mot de passe invalide

Édit : n’utilisant pas cette partie là, je n’avais pas vu que l’on ne pouvat pas fournir le mot de passe de la clé. Donc, est-ce que la clé privée est en clair (non protégée par un mot de passe) ?

Édit le retour : surtout qu’avec mqtt-explorer, tu n’utilises pas de certificat client il me semble ?

Je t’invite à relire ma réponse (poste 13) qui suivait ta question. Non Pas de connexion.

Idem voir ma réponse + copie d’écran (poste 21) qui suit la question. Non Pas de connexion

Avec le C/C je ne pense pas, j’y suis assez vigilant car on peut prendre des caractères invisibles qui sont en fait interprétés par le système et qui le font « planter » ou avoir un comportanment erratique ensuite. De toutes fàçons je ne fait JAMAIS de C/C de MdP. Je les saisi manuellement systématiquement par soucis de sécurité.

Par contre, il pourrait y avoir effectivement un problème peut-être et éventuellement (quoi que) avec le mot de passe de la clé privée de mon certificat de l’autorité CA. En effet, celui-ci fait 17 caractères et d’expérience Jeedom ne semble pas aimer les MdP > 12 caractères. J’ai déjà fait ce constat avec le MdP de mes sauvegardes Jeedom via Samba que j’ai du réduire à moins de 12 caractères pour que ces sauvegardes soient finalement effectives. Cela pourrait être une piste …

Pour ce qui est de la clé privée pour les certificats serveur et client (Jeedom notamment), celles-ci ont été générées SANS mot de passe conformément à de multiples recommandatons trouvées dans différents TUTOs sur la toile (notamment dans celui-ci https://openest.io/linux-embarque/communication-linux/chiffrement-communication-mqtt-tls-ssl-mosquitto-et-paho/ ).

Eh bien, désolé mais NON, j’utilise comme je te l’ai déjà précisé précédemment (à la fin du poste 23) un certificat CA et une paire certificat/clé privée pour le client dans ma connexion avec MQTT Explorer :
image

Je le répète, j’utilise exactement les mêmes pour la configurations du broker dans le plugin jMQTT.
Donc pour moi le problème est bien ailleurs qu’avec ces certificats …

1 « J'aime »

Sauf que la connexion ne se faisait pas car tu mettais l’adresse ip et non le nom d’hôte

Et donc ce n’était pas la même erreur

On est d’accord, ce cas de figure est encore autre chose et somme toute c’est une « erreur normale » qui est retournée dans la mesure où si on veux une connexion sécurisée avec validation par certificat, ce dernier doit être obligatoirement précisé. Je l’ai compris comme cela …

Dans tous les cas, il n’en reste pas moins un problème avec le port 8883 qui actuellement si spécifié, bloque (empêche) la connexion sécurisée. C’est mon constat.

Justement non. Ce qui bloque c’est uniquement la partie certificat client.
La connexion chiffrée elle doit fonctionner. Seule l’authentification forte ne fonctionne pas.

C’est pour ça que si tu refais un test sans le certificat client et en mettant le nom d’hôte de ton serveur mqtt au lieu de l’adresse ip, il ne devrait pas y avoir de problème avec le port 8883

1 « J'aime »

Désolé, mais toujours NON, cela ne marche pas :

De plus, dans cette configuration (sans certificat client - i.e. non coché) j’ai testé les 3 cas de figure avec chacune des options du popup « vérifier le certificat ». AUCUNE ne fonctionne. Pas de connexion.

Et dans ce cas là les logs disent quoi ?

J’ai trouver une potentielle erreur :wink:

J’ai copier/coller un certificat, à partir d’un éditeur de texte, dans les cases du plugin et j’ai été voir en base comment c’était rendu. Ben il y a des \n qui sont introduit à chaque fois que tu vois une ligne dans la case certificat du plugin. Donc les certificats sont considérés invalides.

Il faut essayer de mettre ce qu’il y a entre --BEGIN et --END en une ligne (supprimer les sauts de ligne à la main après avoir fait la copie)

Édit :
OK

-----BEGIN CERTIFICATE-----
MIIEYjCCAsqgAwIBAgIJAJm2YulYpr+6MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlhZMRcwFQYDVQQHDA5DYXN0bGUgQW50aHJheDEjMCEGA1UECgwaUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24xFTATBgNVBAMMDGZha2Vob3N0bmFtZTAeFw0xODA4MjkxNDIzMTZaFw0yODA4MjYxNDIzMTZaMGIxCzAJBgNVBAYTAlhZMRcwFQYDVQQHDA5DYXN0bGUgQW50aHJheDEjMCEGA1UECgwaUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24xFTATBgNVBAMMDGZha2Vob3N0bmFtZTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAMqOuNZmV86zUKGq3VGjIt+rJdsdVcgBbR9PMDF8mfG8U6JaoAAqALapVAzxjTzSRFS5Fpc//D3LBdP4zNfq0HLLlVtNgljJOMc4fjoRYs11yoQmzj4UJWo4hitA9DqkYCEJeaAHLhVvjYkAEvBv4q37LYOTXm2CBVwAc/YqGuL6VFda91r6RkB7YXUiiOa5bIJPLcURgeJzmo0Gxdx/q7WjIVXwzJs67PXMaPe93YL50Qo7g6HD2tHCe8dJq2Mz4J/CJd/yRNfMMEVn/xbf7rIDj2kfFFsbsUTcrVMA+GSun4FVMhQ5x0jvjAQDpQSRYUXmxByaYC2Hn0wRCuXYJeit+0Q+GwpkTn11Q/X6dgA+9H+ZPJI0JLDv+u91/5yxFJnmiWUy7+XGyG26UlgkjTf4iINOfjsUjkP4gXblEQrt3gvMYijpPveS2xP6qlJce5NYL4gAGbwAwX3uWPEdLAxFT/P47m6I41Ei0MCAof84i0Ubng+1ja8CFo7RiJmtlwIDAQABoxswGTAXBgNVHREEEDAOggxmYWtlaG9zdG5hbWUwDQYJKoZIhvcNAQELBQADggGBAMIVLp6e6saH2NQSg8iFg8Ewg/K/etI++jHogCJ697AY02wtfrBox1XtljlmI2xpJtVAYZWHhrNqwrEG43aB7YEV6RqTcG6QUVqaNbD8iNCnMKm7fP89hZizmqA1l4aHnieI3ucOqpgooM7FQwLX6qk+rSue6lD5N/5favsublnj8rNKyDfHpQ3AWduLoj8QqctpzI3CqoDZNLNzaDnzVWpxT1SKDQ88q7VIW5zb+lndpdQlCu3v5HM4w5UpwL/k1htl/z6PnPseS2UdlXv6A8KITnCLg5PLP4tz2oTAg9gjOtRP/0uwkhvicwoFzFJNVT813lzTLE1jlobMPiZhsS1mjaJGPD9GQZDKny3j8ogrIRGjnI4xpOMNNDVphcvwtV8fRbvURSHCj9Y4kCLpD5ODuoyEyLYicJIvGZP456GP0iSCK5GKO0ij/YzGCkPWD5zA+mYFpMMGZPTwajenMw7TVaPXcc9CZBtroOjwwiLEqdkpxUj13mJYTlt5wsS/Kw==
-----END CERTIFICATE-----

KO

-----BEGIN CERTIFICATE-----
MIIEYjCCAsqgAwIBAgIJAJm2YulYpr+6MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
BAYTAlhZMRcwFQYDVQQHDA5DYXN0bGUgQW50aHJheDEjMCEGA1UECgwaUHl0aG9u
IFNvZnR3YXJlIEZvdW5kYXRpb24xFTATBgNVBAMMDGZha2Vob3N0bmFtZTAeFw0x
ODA4MjkxNDIzMTZaFw0yODA4MjYxNDIzMTZaMGIxCzAJBgNVBAYTAlhZMRcwFQYD
VQQHDA5DYXN0bGUgQW50aHJheDEjMCEGA1UECgwaUHl0aG9uIFNvZnR3YXJlIEZv
dW5kYXRpb24xFTATBgNVBAMMDGZha2Vob3N0bmFtZTCCAaIwDQYJKoZIhvcNAQEB
BQADggGPADCCAYoCggGBAMqOuNZmV86zUKGq3VGjIt+rJdsdVcgBbR9PMDF8mfG8
U6JaoAAqALapVAzxjTzSRFS5Fpc//D3LBdP4zNfq0HLLlVtNgljJOMc4fjoRYs11
yoQmzj4UJWo4hitA9DqkYCEJeaAHLhVvjYkAEvBv4q37LYOTXm2CBVwAc/YqGuL6
VFda91r6RkB7YXUiiOa5bIJPLcURgeJzmo0Gxdx/q7WjIVXwzJs67PXMaPe93YL5
0Qo7g6HD2tHCe8dJq2Mz4J/CJd/yRNfMMEVn/xbf7rIDj2kfFFsbsUTcrVMA+GSu
n4FVMhQ5x0jvjAQDpQSRYUXmxByaYC2Hn0wRCuXYJeit+0Q+GwpkTn11Q/X6dgA+
9H+ZPJI0JLDv+u91/5yxFJnmiWUy7+XGyG26UlgkjTf4iINOfjsUjkP4gXblEQrt
3gvMYijpPveS2xP6qlJce5NYL4gAGbwAwX3uWPEdLAxFT/P47m6I41Ei0MCAof84
i0Ubng+1ja8CFo7RiJmtlwIDAQABoxswGTAXBgNVHREEEDAOggxmYWtlaG9zdG5h
bWUwDQYJKoZIhvcNAQELBQADggGBAMIVLp6e6saH2NQSg8iFg8Ewg/K/etI++jHo
gCJ697AY02wtfrBox1XtljlmI2xpJtVAYZWHhrNqwrEG43aB7YEV6RqTcG6QUVqa
NbD8iNCnMKm7fP89hZizmqA1l4aHnieI3ucOqpgooM7FQwLX6qk+rSue6lD5N/5f
avsublnj8rNKyDfHpQ3AWduLoj8QqctpzI3CqoDZNLNzaDnzVWpxT1SKDQ88q7VI
W5zb+lndpdQlCu3v5HM4w5UpwL/k1htl/z6PnPseS2UdlXv6A8KITnCLg5PLP4tz
2oTAg9gjOtRP/0uwkhvicwoFzFJNVT813lzTLE1jlobMPiZhsS1mjaJGPD9GQZDK
ny3j8ogrIRGjnI4xpOMNNDVphcvwtV8fRbvURSHCj9Y4kCLpD5ODuoyEyLYicJIv
GZP456GP0iSCK5GKO0ij/YzGCkPWD5zA+mYFpMMGZPTwajenMw7TVaPXcc9CZBtr
oOjwwiLEqdkpxUj13mJYTlt5wsS/Kw==
-----END CERTIFICATE-----

1 « J'aime »

@tomdom
Bon j’ai fait comme tu l’as préconisé, supprimé à la main tous les « fin de ligne » entre BEGIN et END.
J’ai procédé de deux façons : un coup directement dans le plugin, puis un autre coup avec édition préalable dans « UltraEdit » et C/C dans le plugin.

Désolé mais cela ne marche pas mieux dans les deux cas.

De toutes façons, si je peux me permettre, tu ne peux pas demander aux utilisateurs de procéder ainsi pour saisir leur certificats. C’est trop sources d’erreurs à mon humble avis et de surcroît difficile à débugger en suite pour savoir que cela viendrait de là.

Comme je le suggérais précédemment, il serait plus judicieux et bien plus simple, enfin je le crois, que l’utilisateur désigne simplement le fichier certificat (CA, client et key privée) après une recherche dans l’explorateur de fichiers ET qu’en suite ce soit le plugin qui fasse (si besoin en est effectivement) « le ménage » dans les « fins de lignes » de façon transparente. Maintenant ce n’est qu’une proposition d’évolution … A voir avec Domochip ce qu’il en pense si la solution est bien là …

Faire déjà juste le test avec l’ac (sans mettre de certificat client) et en mettant le log du « ça marche pas », permettrait peut-être d’avancer, autrement tu peux attendre que le développeur fasse évoluer le plugin.

Bonne soirée

@tomdom
J’ai donc fait le test avec uniquement le certificat AC et décoché le certificat client.

Toujours pareil cela ne marche pas : pas de connexion.

Le LOG jMQTTd :

[2022-12-19 22:47:33,982]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:47:33,988]INFO Main            MainThread     h_delClient() : Starting removal of Client for Broker 466
[2022-12-19 22:47:33,989]DEBUG Client466       MainThread            stop() : jMqttClient ended
[2022-12-19 22:47:34,005]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'hb'}]
[2022-12-19 22:47:34,090]INFO Main            MainThread     h_newClient() : Creating Client for Broker 466.
[2022-12-19 22:47:34,092]ERROR Client466       MainThread           start() : Fatal TLS Certificate import Exception, this connection will most likely fail!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 218, in start
self.mqttclient.tls_set(ca_certs=certs, cert_reqs=reqs, certfile=cert, keyfile=key)
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 804, in tls_set
context.load_verify_locations(ca_certs)
ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4053)
[2022-12-19 22:47:34,096]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 22:47:34,096]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 22:47:34,106]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:47:34,184]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 22:47:36,099]INFO Main            MainThread     h_newClient() : Client already exists for Broker 466. Restarting it.
[2022-12-19 22:47:37,100]DEBUG Client466       MainThread            stop() : jMqttClient ended
[2022-12-19 22:47:37,102]ERROR Client466       MainThread           start() : Fatal TLS Certificate import Exception, this connection will most likely fail!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 218, in start
self.mqttclient.tls_set(ca_certs=certs, cert_reqs=reqs, certfile=cert, keyfile=key)
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 804, in tls_set
context.load_verify_locations(ca_certs)
ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4053)
[2022-12-19 22:47:37,105]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 22:47:37,106]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 22:47:37,190]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:47:37,261]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 22:47:42,110]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 22:47:42,111]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 22:47:42,172]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:47:42,285]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 22:47:52,116]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 22:47:52,116]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 22:47:52,202]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:47:52,265]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]
[2022-12-19 22:48:03,754]INFO Main            MainThread     h_newClient() : Client already exists for Broker 466. Restarting it.
[2022-12-19 22:48:04,129]DEBUG Client466       MainThread            stop() : jMqttClient ended
[2022-12-19 22:48:04,132]ERROR Client466       MainThread           start() : Fatal TLS Certificate import Exception, this connection will most likely fail!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 218, in start
self.mqttclient.tls_set(ca_certs=certs, cert_reqs=reqs, certfile=cert, keyfile=key)
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 804, in tls_set
context.load_verify_locations(ca_certs)
ssl.SSLError: [X509] no certificate or crl found (_ssl.c:4053)
[2022-12-19 22:48:04,137]DEBUG JMsg.Snd        Brk466Th        send_async() : Enqued message: {'cmd': 'brokerDown', 'id': '466'}
[2022-12-19 22:48:04,138]ERROR Client466       Brk466Th     on_disconnect() : Unexpected disconnection from broker!
[2022-12-19 22:48:04,190]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
[2022-12-19 22:48:04,268]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'brokerDown', 'id': '466'}]

Bonne soirée aussi, A+

Bonjour,

Il n’arrive pas à lire le certificat de l’AC, il est possible qu’il reste des \n.

Tu peux le vérifier en allant dans Réglages/System/OS DB/Administration Base de donnée et tu fais la requête suivante, en mettant dans la clause where le nom de l’équipement broker (entre " ")

Personnellement, même en mettant sur une ligne dans un éditeur de texte, je me suis retrouvé avec 3 \n après la copie

Je suis d’accord avec toi sur le fait que le développeur de ce très bon plugin devrait apporter une petite amélioration à ce sujet :wink: (au moins le nettoyage des \n et des \r entre les lignes ---BEGIN et --END)

Bonjour,
Je suis en silencieux (admiratif) vos échanges pour essayer de faire fonctionner. Si l’un de vous 2 ou en coopération vous pouvez lorsque cela marchera faire un tuto compréhensif pour les nuls comme moi ce serait bien sympa :slight_smile:
Bien cordialement

2 « J'aime »