我想通過tls使用我自己的證書頒發機構將我的python paho mqtt客戶端連接到我的代理。我生成了必要的文件,並配置了我的RabbitMQ代理來使用它們。我的想法是客戶端認證服務器,但客戶端本身不需要認證。python paho mqtt客戶端連接通過ssl/tls給出錯誤
- ca.cert.pem
- cert.pem
- key.pem
我知道這些應能正常工作,因爲我也有一個階泛美衛生組織MQTT客戶端正常工作。
目前我直接從我的Mac上的終端運行文件。我使用的Python 3.5.2創建virtuanenv和我有一個文件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()
當我跑我收到以下錯誤
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)
我也試圖改變tls_version
到TLSv1_1
文件,TLSv1
,並完全放棄。 ca.cert.pem
與subscribe.py
文件位於同一文件夾中
paho網站上的示例看起來很簡單,所以我在這裏錯過了什麼?爲什麼我在我的Python客戶端上收到錯誤?