Aller au contenu

Mosquitto et ssl


Florian33000

Messages recommandés

Bonjour,

 

Niveau : Débutant

Image : hub.docker.com/_/eclipse-mosquitto/

Interface : Container Manager

Mode réseau : bridge (mais je n'ai pas une ip différente, le port utilisé est par rapport à l'ip du nas, je ne parviens pas à lui attribuer une nouvelle IP)

 

Je recherche à ajouter un conteneur mosquitto avec une config ssl mais je n'y parviens pas. J'ai bien créé le sous domaine de mon domaine. Par le proxy inversé j'ai redirigé le port 443 vers 9001 pour le websocket à l'avenir. J'ai donc cette détection faite par le NAS et le certificat SSL créé avec ce nom de domaine. Je souhaiterai utiliser les .pem généré pour configurer le ssl de mosquitto mais je n'y parviens pas.

certfile	/mosquitto/config/cert.pem
cafile		/mosquitto/config/chain.pem
keyfile		/mosquitto/config/privkey.pem

Le certfile me génère l'erreur suivante : unknow configuration variable

 

Quelqu'un peut il me guider/aider ?

 

En outre, je suis preneur d'un tuto où je peux faire une config pour avoir une nouvelle ip pour mes conteneurs.

PS : je n'utilise pas l'onglet projet.

 

Merci par avance !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Oui, aucun souci là dessus. Cependant le client que je souhaite utiliser n'est pas encore compatible websocket. C'est pour cela que, malgré d'autres clients qui seront en websocket, j'aurai besoin de sécuriser une connexion mqtt. Cependant j'ai l'erreur indiquée. Quand je passe sinon en bridge_certfile etc, je bloque alors sur bridge_cafile. J'ai toujours un blocage à un endroit malgré pas mal de test. Je ne vois cependant pas où ca bloque.

Lien vers le commentaire
Partager sur d’autres sites

Je n'ai jamais monté de connexion chiffrée entre deux brokers (ce que tu tentes de faire avec bridge_certfile), mais ça ne doit pas être très différent des connexions chiffrées entre brokers et clients ?

À part suivre scrupuleusement ce qui est indiqué dans la documentation, je ne pourrais pas plus t'aider :

https://mosquitto.org/man/mosquitto-conf-5.html

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

@PiwiLAbruti : Oui j'ai bien vu la configuration cependant je dois louper quelque chose car cela ne fonctionne pas.

 

@.Shad. : Merci pour le lien. Je l'ai suivi scrupuleusement  le 1 et 2. Le 3 j'ai bien créé un dossier certs et suivi la partie "Mosquitto server. Cependant suite à cela je me prends toujours le message d'erreur suivant (j'ai même mis les lignes dans le même ordre cafile, certfile, keyfile) :

image.thumb.png.0d4376109191c7f8b95d4fc9ae2642f1.png

 

Voici mon fichier config pour cette partie :

listener 8883
protocol mqtt
cafile		/mosquitto/certs/ca.crt
certfile	/mosquitto/certs/server.crt
keyfile		/mosquitto/certs/server.key

 

Lien vers le commentaire
Partager sur d’autres sites

La directive cafile n'accepte que les fichiers encodés au format PEM. Est-ce le cas de ton fichier ca.crt ?

cafile file path

cafile is used to define the path to a file containing the PEM encoded CA certificates that are trusted when checking incoming client certificates.

Lien vers le commentaire
Partager sur d’autres sites

@Florian33000

C'est bon de ce côté-là.
Première recherche Google de mon côté instantiating a broker with config file always gives me an "Unknown configuration variable" error · Issue #1724 · eclipse/mosquitto · GitHub

Regarde si ça ne résout pas ton problème, en utilisant Notepad++ par exemple.

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

@Florian33000 Bon chez moi ça fonctionne, en ayant chipoté un peu quand même.

mosquitto.conf (tls) :

#_____________________#

## TLS LISTENER
listener 8883 0.0.0.0
protocol mqtt
password_file /mosquitto/data/password_data

certfile /mosquitto/certs/server.crt
cafile /mosquitto/certs/ca.crt
keyfile /mosquitto/certs/server.key
capath /mosquitto/certs/

#_____________________#

Pour les étapes de génération de certificats de la CA, du serveur et du client, je suis passé par ce tutoriel : http://www.steveio.com/tag/messaging/
J'ai également suivi ses recommandations quant au fait que les trois entités doivent avoir un Common Name différent, le seul qui compte vraiment est celui du serveur pour lequel on doit stipuler son FQDN.

J'ai généré sur mon serveur mqtt les fichiers relatifs à la CA et au serveur, puis j'ai copié le ca.crt et ca.key sur mon laptop où j'ai mis une VM debian avec Mosquitto utilisé en client. Puis j'ai soucrit à un topic nommé "test" :

mosquitto_sub --cafile /mosquitto/certs/ca.crt --cert /mosquitto/certs/client.crt --key /
mosquitto/certs/client.key -h ida.xxx.ovh -p 8883  -q 1 -t "test" -d -u mosquitto -P rK2hdtXXXXXXXXX

-d c'est pour une verbosité debug, puis les credentials de connexion utilisés dans le password_file, ça fonctionne :

Enter PEM pass phrase:
Client null sending CONNECT
Client null received CONNACK (0)
Client null sending SUBSCRIBE (Mid: 1, Topic: test, QoS: 1, Options: 0x00)
Client null received SUBACK
Subscribed (mid: 1): 1

Puis j'ai essayé de publier un message :

mosquitto_pub --cafile /mosquitto/certs/ca.crt --cert /mosquitto/certs/client.crt --key /
mosquitto/certs/client.key -h ida.xxx.ovh -p 8883 -q 1 -t "test" -i anyclientID --tls-vers
ion tlsv1.3 -m "Hello" -d -u mosquitto -P rK2hdtXXXXXXXXX

Résultat le message est lu :

Client null received PUBLISH (d0, q1, r0, m1, 'test', ... (5 bytes))
Client null sending PUBACK (m1, rc0)
Hello

En revanche, je précise qu'avec MQTT Explorer, je récolte systématiquement une erreur. En CLI par contre RAS.

Lien vers le commentaire
Partager sur d’autres sites

@.Shad. : Merci beaucoup pour tout ca !

Ton code fonctionnait parfaitement (y compris avec mes certificats avec le meme CN), j'ai rajouté mes parties au fur et à mesure et je me suis aperçu que le seul point qui ne correspondait pas était les espaces entre cafile etc et le chemin du fichier... en mettant plusieurs espaces ca plante, un seul ca fonctionne parfaitement ! Un grand merci pour tes tests !

 

J'ai par contre 2 dernières petites choses qui risquent de poser souci :

image.png.e673703bc16fbd75956ee35cc015454a.png

Que me recommandes-tu exactement ?

 

En outre, mon client me demande un certificat bks. Comment puis-je le générer à partir du premier tutoriel indiqué ? En passant par le certificat créé par synology, j'aurai besoin de faire ce genre de chose ?

Lien vers le commentaire
Partager sur d’autres sites

@Florian33000 👌

Pour le chmod, ben tu peux chmoder comme ils le suggèrent, ça va enlever les ACL de DSM mais tu peux les remettre en réattribuant un propriétaire au fichier depuis File Station.

Je ne connais pas ce format de certificat, apparemment de ce que je lis faudrait utiliser un binaire "keytool" pour effectuer la conversion.

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.