如何在 Mosquitto 上提供基于 SSL/TLS 的通信?

How to provide SSL/TLS based communication on Mosquitto?

我正在开发一个使用 Mqtt 协议与节点通信的应用程序。我在 Windows 上使用 Mosquitto 作为经纪人。我想使用 Mosquitto 的 SSL/TLS 功能来提供安全的身份验证和消息传递机制。我创建相关证书并在 mosquitto.conf 文件上进行配置。但是,当我尝试从命令提示符加载 mosquitto.conf 并重新启动 mosquitto 服务时,该服务无法启动并报错。我会解释我做了什么;

1) 我使用 OpenSSL 创建了证书。我遵循了“https://eclipse.org/mosquitto/man/mosquitto-tls-7.php”的说明。 首先,我创建了 ca.crt(根 CA 证书);

相关证书信息如上所示。我还输入 "trialca" 作为 ca.crt 的 PEM 密码。然后,我创建了 server.key(我使用 "trialsrv" 作为密码)、server.csr 和 server.crt; ;

2) 我在 mosquitto.conf;

上做了一些配置
cafile /demo/ca.crt

certfile /demo/server.crt

keyfile /server.key

require_certificate true

use_identity_as_username true

注意:我在端口 1883 上使用默认侦听器。

3) 我在 PC 上的 Mosquitto 服务器 运行 上从命令提示符加载 mosquitto.conf。

c:\Program Files (x86)\mosquitto> mosquitto -c mosquitto.conf

然后,我从 Windows 的服务中重新启动了 Mosquitto 服务。但是,它无法启动并报错。

有没有我做错了什么?我需要你的建议来解决这个问题。

如果您已经从命令行启动了一个 mosquitto 实例,那么将其作为服务启动将不起作用,因为第一个已经 运行 相同的配置。

我今天下午遇到了同样的问题。我通过删除服务器密钥中的密码来解决它。命令行 exe 不需要密码,服务启动时没有出现该错误。

生成证书后,运行 这个。 (先将 server.key 重命名为 server.key.org)

openssl rsa -in server.key.org -out server.key

https://webmasters.stackexchange.com/questions/1247/can-i-skip-the-pem-pass-phrase-question-when-i-restart-the-webserver