私の理解ではrequire_certificate false
、構成にある場合、証明書とキーが提供されていなくても、Mosquitto Broker はクライアントの接続を許可します。私が呼び出していない場合でも、Python クライアントに対してより具体的にする
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
サーバー側のエラー:
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
か? はいの場合、ここで何か間違ったことをしているかどうかを理解するのを手伝ってもらえますか?
Mosquitto バージョン 1.2、1.2.1、および 1.2.2 で試しました。