我的理解是,如果我的配置中有require_certificate false
,那麼即使它沒有提供任何證書和密鑰,Mosquitto Broker也會允許客戶端連接;成爲Python用戶端更具體的,即使我不打電話當requires_certificate爲false時無法連接到Mosquitto Broker
mq.tls_set(mqttCafile, mqttCertfile, mqttKeyfile)
調用
mq.connect(mqttBrokerURL, mqttBrokerPort, keepAliveTime)
之前,但我們無法與代理連接,而無需調用tls_set()
功能。
mosquitto.conf內容:
port 8883
cafile ssl/all-ca.crt
certfile ssl/server.crt
keyfile ssl/server.key
require_certificate false
tls_version tlsv1
password_file /etc/mosquitto/passwd
allow_anonymous false
Sever的端錯誤:
1382529992: Config loaded from mosquitto.conf.
1382529992: Opening ipv4 listen socket on port 8883.
1382529992: Opening ipv6 listen socket on port 8883.
1382530058: New connection from 127.0.0.1 on port 8883.
1382530058: OpenSSL Error: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
1382530058: Socket read error on client (null), disconnecting.
客戶端錯誤:
[Errno 104] Connection reset by peer
Done: 7
當我們通過證書連接成功。我的要求是經紀人應該允許兩種情況下的連接。這可以使用require_certificate
來實現嗎?如果是的話,你能幫我弄清楚我在這裏做錯了什麼嗎?
我試過用蚊子1.2版,1.2.1 & 1.2.2。
謝謝羅傑。 我現在還有一些其他問題可以達到我的要求,我會在另一個問題中提出要求。 – Dilip