2016-02-29 1 views
0

je me suis mosquitto de travail, en utilisant vieux TCP simple mais je veux le fixer avec SSL et TLS, alors j'ai suivi le guide suivant pour créer les certificats pour mon courtier mosquitto:Comment configurer TLS sur un courtier mosquitto (MQTT)?

https://mosquitto.org/man/mosquitto-tls-7.html

Puis j'ai ajouté la lignes suivantes dans le fichier de configuration:

listener 8883 
cafile /mqtt/certs/ca.crt 
certfile /mqtt/certs/server.crt 
keyfile /mqtt/certs/server.key 
require_certificate false 

Mais maintenant, quand je tente d'utiliser mosquitto_sub sur une autre machine pour essayer de se connecter au courtier mosquitto sur le port 8883 (TLS), je reçois l'erreur suivante sur le courtier

New connection from XX.XXX.XXX.XXX on port 8883. 
OpenSSL Error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca 
OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure 
Socket error on client <unknown>, disconnecting. 

J'ai essayé de faire la mosquitto_sub des façons suivantes:

$ mosquitto_sub -h "HOST_HERE.com" -t "sup" -p 8883 
$ mosquitto_sub -h "HOST_HERE.com" -t "sup" -p 8883 --cafile ca.crt 
$ mosquitto_sub -h "HOST_HERE.com" -t "sup" -p 8883 --cafile ca.crt --cert client.crt --key client.key 

Et les certificats du côté client ont été générés à partir du premier lien je l'ai mentionné plus tôt.

Quelqu'un sait pourquoi cela se passe et comment je peux y remédier?

Répondre

1

C'est la bonne façon de souscrire que vous ne souhaitez pas le certificat client:

mosquitto_sub -h "HOST_HERE.com" -t "sup" -p 8883 --cafile ca.crt 

Il semble que le client ne parviennent pas à vérifier le certificat du serveur. Vous devez vous assurer que:

  • ca.crt est le même côté client et serveur
  • le nom commun de votre certificat de serveur correspond à son nom d'hôte

Vérifiez également si vous avez la même version openssl côté serveur et côté client car cette erreur peut également se produire si le client et le serveur n'utilisent pas un protocole commun ou ne partagent pas de chiffrement

espérons que cela pourrait aider, sinon je serais intéressé de savoir comment vous avez résolu ce problème problème

+0

J'ai le même problème, mais mon courtier est sur AWS EC2 et par conséquent le nom d'hôte change tout le temps. L'utiliser comme nom commun n'a pas de sens. Y a-t-il d'autres moyens de régler le problème? – Nazar

0

Essayez l'option --insecure.

mosquitto_sub -h "HOST_HERE.com" -t "sup" -p 8883 --cafile ca.crt --insecure