2016-08-23 2 views
3

Ich versuche, meinen python paho mqtt client zu meinem broker durch tls mit meiner eigenen certificate authority zu verbinden. Ich habe notwendige Dateien erstellt und meinen RabbitMQ-Broker so konfiguriert, dass er sie verwendet. Meine Idee ist, dass der Client den Server authentifiziert, aber der Client selbst muss nicht authentifiziert werden.python paho mqtt client-verbindung durch ssl/tls geben einen fehler

  • ca.cert.pem
  • cert.pem
  • key.pem

Ich weiß, diese korrekt funktionieren sollte, weil ich das richtig funktioniert auch ein scala paho MQTT Client haben.

Derzeit laufe ich die Datei direkt vom Terminal auf meinem Mac. Ich verwende eine virtuanenv von Python erstellt 3.5.2 und ich habe eine Datei subscribe.py

import paho.mqtt.client as paho 
import ssl 

def on_message(clnt, userdata, msg): 
    print(msg.topic+" "+str(msg.payload)) 

def on_connect(client, userdata, rc): 
     print("Connected with result code "+str(rc)) 
     mqttc.subscribe("foo") 

mqttc = paho.Client() 
mqttc.on_message = on_message 
mqttc.on_message = on_message 
mqttc.tls_set("ca.cert.pem", tls_version=ssl.PROTOCOL_TLSv1_2) 
mqttc.connect("address", 8883, 60) 
mqttc.loop_forever() 

Wenn ich die Datei, die ich die folgende Fehlermeldung führen

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645) 

ich auch die tls_version zu TLSv1_1 versucht haben, zu ändern , TLSv1 und es vollständig auslassen. ca.cert.pem ist in dem gleichen Ordner wie die subscribe.py Datei

Das Beispiel auf Paho Website scheint sehr einfach so was fehlt mir hier? Warum erhalte ich den Fehler auf meinem Python-Client?

Antwort

1

Haben Sie mosquitto Kunden ausprobiert? Es gibt viele Möglichkeiten für das Problem, auf das Sie gestoßen sind, so dass es am besten ist, es anders auszuprobieren.

mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v

d Flag ist für Debug-Nachrichten, v flag ausführlichen Modus ist.

Wenn mosquitto Client mit ca keine Verbindung herstellen können, können Sie versuchen:

mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v --insecure

Die unsichere Flagge wird CA für Server-Überprüfung ignorieren. Wenn add das unsichere Flag Sie verbinden kann, dann ist die CA vielleicht falsch. Sie können openssl verwenden, um es dann zu debuggen.

Verwandte Themen