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

Mosquitto TLS连接被拒:未授权问题求助(树莓派MQTT服务器)

问题诊断与解决方案

核心问题:客户端命令参数错误

从客户端调试日志可以明确看到,--key参数错误指定了证书文件(.crt后缀),但该参数要求传入客户端私钥文件(通常为.key后缀),直接导致OpenSSL无法解析私钥,抛出no start line格式错误。

修正后的客户端命令

将--key指向正确的客户端私钥文件(假设私钥文件名为listener03-client.key),同时修正--cafile指向CA根证书而非服务器证书,命令如下:

sudo mosquitto_sub -v -d -h 192.168.2.215 -u xxx -P 'yyy' \
--key /etc/mosquitto/certs/listener03-client.key \
--cert /etc/mosquitto/certs/listener03-client.crt \
--cafile /etc/mosquitto/ca_certificates/mosquitto-certificate-authority.crt \
-t 'temperatures' -p 8883 --tls-version tlsv1.2 -i listener03

补充说明:

  • 客户端私钥文件权限建议设置为600(仅所有者可读),避免权限过大引发的安全限制。
  • --cafile必须指向CA根证书,这样客户端才能验证服务器证书的合法性。

关于同一IP的可行性

服务器和客户端使用同一私有IP(192.168.2.215)完全可行,属于本地回环测试场景,Mosquitto原生支持该模式,不会导致连接问题。

额外检查点

  1. 验证密码文件有效性
    确保/etc/mosquitto/passwd中的账号是通过mosquitto_passwd工具正确生成的,可执行以下命令更新密码文件格式:
sudo mosquitto_passwd -U /etc/mosquitto/passwd
  1. 确认配置文件加载
    检查/etc/mosquitto/mosquitto.conf是否包含对authentication.conf和encryption.conf的引用,例如:
include_dir /etc/mosquitto/conf.d
  1. 验证证书链完整性
    使用OpenSSL检查客户端证书是否由指定CA签名:
openssl verify -CAfile /etc/mosquitto/ca_certificates/mosquitto-certificate-authority.crt /etc/mosquitto/certs/listener03-client.crt

返回OK则表示证书链有效。

成功验证

修正命令后,查看/var/lib/mosquitto/mosquitto.log,出现以下日志则说明连接认证成功:

1689518781: New connection from 192.168.2.215:45280 on port 8883.
1689518781: Client listener03 authenticated.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:52:40