我的理解是,如果我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。