You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mosquitto可发SSL消息,Python Paho脚本遇证书验证失败原因咨询

Mosquitto可正常发送SSL消息,但Python Paho报CERTIFICATE_VERIFY_FAILED的原因及解决办法

为什么两者表现不同?

  • Mosquitto客户端默认不验证服务器证书的主机名/IP匹配性,只要证书是可信CA签发的,哪怕证书里没包含你用来连接的公网IP作为SAN(主题备用名称),也能顺利连接。
  • Python Paho依赖Python标准库的ssl模块,默认会严格执行证书验证:当你用公网IP连接MQTT broker时,证书里必须把这个IP添加到SAN字段里,否则就会触发IP address mismatch验证失败错误。

无需修改服务器证书的临时解决方法

如果只是测试场景,不想折腾重新生成证书,可以在Python代码里关闭主机名验证逻辑:
在调用client.tls_set之后,添加一行代码:

client.tls_insecure_set(True)

注意:这个操作会跳过证书的主机名验证,降低连接的安全性,仅适合测试环境使用,生产环境不推荐。

生产环境的标准解决方案

要彻底解决问题,还是得生成包含公网IP的SAN证书。针对你用的tls-gen工具,可以这么改:

  1. 找到tls-gen的基础配置文件(比如basic/openssl.cnf)
  2. 在配置文件里添加SAN相关配置:
[req]
req_extensions = v3_req

[v3_req]
subjectAltName = IP:<你的公网IP地址>
  1. 按照tls-gen的流程重新生成CA和服务器证书即可。

内容的提问来源于stack exchange,提问作者Igor L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:20:07