【问题标题】:MQTT broker Mosquitto Error with TLS configuration带有 TLS 配置的 MQTT 代理 Mosquitto 错误
【发布时间】:2017-08-12 22:55:52
【问题描述】:

我正在尝试运行支持 TLS 的 MQTT 代理 (Mosquitto),我按照 http://rockingdlabs.dunmire.org/exercises-experiments/ssl-client-certs-to-secure-mqtt 生成证书和配置。如果我运行

sudo /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d -v

它在 /var/log/mosquitto/mosquitto.log 中抛出错误

mosquitto version 1.4.8 (build date Fri, 19 Feb 2016 12:03:16 +0100) starting
Config loaded from /etc/mosquitto/mosquitto.conf.
Opening ipv4 listen socket on port 8883.
Opening ipv6 listen socket on port 8883.
Error: Unable to load server key file "/etc/mosquitto/certs/mqtt_server.key". Check keyfile.

这是我在 conf.d/mymqtt.conf

中的配置
# MQTT over TLS/SSL
listener 8883
cafile /etc/mosquitto/ca_certificates/mqtt_ca.crt
certfile /etc/mosquitto/certs/mqtt_server.crt
keyfile /etc/mosquitto/certs/mqtt_server.key
require_certificate true
tls_version tlsv1.2
user mosquitto

并且这些证书和密钥文件存在于适当的位置

这是默认mosquitto.conf

的内容
pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

【问题讨论】:

  • 密钥和证书文件是什么格式的?密钥文件也有密码吗?

标签: https mqtt tls1.2 mosquitto


【解决方案1】:

我曾经遇到过同样的问题,这是因为密钥受密码保护。我更改了文件设置,使密钥文件只能由一组特定用户读取,并删除了密码。

【讨论】:

  • 我删除了密码,但现在 mosquitto_sub 无法连接客户端证书,我收到“OpenSSL 错误:错误:14094418:SSL 例程:ssl3_read_bytes:tlsv1 alert unknown ca”
  • 这可能是因为 mosquitto_sub 不知道受信任的证书颁发机构列表。将公共证书放入 /etc/ssl/certs 并使用 --capath /etc/ssl/certs 指定 mosquitto_sub 中的路径。
【解决方案2】:

为了后代: 如果密钥也与证书不匹配,您会收到此错误。所以记得检查一下:

openssl rsa -noout -in -key.pem -modulus | openssl md5

应该匹配

openssl x509 -noout -in cert.pem -modulus | openssl md5

我花了几个小时试图解决这个问题,直到我意识到我把钥匙弄混了。

【讨论】:

  • 谢谢!这对我来说也是如此!但是,似乎在签署证书请求后无法使 md5 匹配。如何让它与真正的 CA 证书一起工作似乎总是不同的。
猜你喜欢
  • 2021-09-22
  • 2013-09-24
  • 2016-06-12
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多