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

使用证书订阅MQTT主题时mosquitto_sub报证书验证失败错误

MQTT订阅SSL证书验证失败(error:0A000086)排查方案

针对你遇到的error:0A000086:SSL routines::certificate verify failed错误,在已确认证书路径和权限无误的前提下,可按以下方向排查:

  • 参数使用错误:--capath vs --cafile
    --capath要求指向存放CA证书的目录,且目录内证书需通过c_rehash生成哈希链接;如果你用的是单个CA证书文件,应该改用--cafile参数。修正后的命令示例:

    mosquitto_sub -d -v --cafile <path_to_file>/xxx.pem --cert <path_to_file>/yyy.pem.crt  --key <path_to_file>/zzz.pem.key -h "<my_endpoint>" -p 8883 -t "<my_topic>"
    
  • CA证书链不完整
    若MQTT服务器证书由中间CA签发,仅提供根CA证书无法完成验证。需将根CA与所有中间CA证书内容合并到同一个.pem文件中,再通过--cafile指定该文件。

  • 证书域名/IP不匹配
    客户端会验证服务器证书的CN(通用名称)或SAN(主题备用名称)是否与你指定的<my_endpoint>一致:

    • 用openssl x509 -in <服务器证书文件> -noout -text查看证书的CN和SAN字段;
    • 若用IP连接,确认证书SAN包含该IP;
    • 测试环境可临时添加--insecure跳过域名验证(生产环境禁止使用)。
  • 证书有效期异常
    检查证书是否过期或未生效:

    openssl x509 -in <path_to_file>/yyy.pem.crt -noout -dates
    

    确保notBefore早于当前时间,notAfter晚于当前时间。

  • 证书与私钥不配对
    验证客户端证书和私钥是否匹配:

    # 提取证书公钥
    openssl x509 -in <path_to_file>/yyy.pem.crt -noout -pubkey
    # 提取私钥对应公钥
    openssl rsa -in <path_to_file>/zzz.pem.key -pubout
    

    两个输出的公钥内容必须完全一致,否则需更换匹配的证书/私钥对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:40:27