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

Mosquitto SSL/TLS配置遇证书验证失败及协议错误问题

解决Mosquitto SSL/TLS证书验证失败问题

以下是几个可能的原因及对应的解决方法:

1. 服务器证书缺少IP地址的主题备用名称(SAN)

现代SSL/TLS库优先检查证书的**主题备用名称(SAN)**而非通用名称(CN)。即使你将服务器IP设为CN,如果证书中没有添加对应的SAN条目,客户端仍会验证失败。

修复步骤:

  • 创建一个OpenSSL配置文件(比如server_opts.cnf),内容如下:
    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = CN
    ST = 你的省份
    L = 你的城市
    O = 你的组织
    OU = 你的部门
    CN = 91.121.93.94
    
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = IP:91.121.93.94
    
  • 重新生成服务器CSR:
    openssl req -out server.csr -key server.key -new -config server_opts.cnf
    
  • 重新签发服务器证书(添加SAN扩展):
    openssl x509 -req -in server.csr -CA ca.crt.crt -CAkey ca.key -CAcreateserial -out server.crt.crt -days 3650 -extfile server_opts.cnf -extensions v3_req
    
  • 重启Mosquitto服务后,重新测试订阅命令。

2. 检查客户端与服务器的系统时间同步

如果客户端的系统时间与服务器时间偏差过大(超出证书的有效期范围),证书会被判定为过期或未生效。确保两者时间一致,可同步到NTP服务器。

3. 验证证书链有效性

在客户端运行以下命令,检查服务器证书是否被CA正确签名:

openssl verify -CAfile d:/etc/mosquitto/ca_certificates/ca.crt.crt d:/etc/mosquitto/certs/server.crt.crt

如果输出OK则说明证书链有效;若报错,则需重新检查证书生成流程。

4. 修正Windows路径格式

Windows系统中,部分工具会将反斜杠\解析为转义字符,建议在Mosquitto配置文件和客户端命令中使用正斜杠/:

  • 配置文件修改:
    cafile d:/etc/mosquitto/ca_certificates/ca.crt.crt
    certfile d:/etc/mosquitto/certs/server.crt.crt
    keyfile d:/etc/mosquitto/certs/server.key
    
  • 订阅命令修改:
    mosquitto_sub -d -v -h 91.121.93.94 -p 8883 -t test --cafile d:/etc/mosquitto/ca_certificates/ca.crt.crt
    

5. 指定TLS版本(可选)

若客户端与服务器的TLS版本不兼容,可在Mosquitto配置中明确指定版本:

listener 8883
allow_anonymous true
cafile d:/etc/mosquitto/ca_certificates/ca.crt.crt
certfile d:/etc/mosquitto/certs/server.crt.crt
keyfile d:/etc/mosquitto/certs/server.key
tls_version tlsv1.2

内容的提问来源于stack exchange,提问作者Xiang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:15:44