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

时间:2015-12-11 15:15:57

标签: ssl openssl 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证书); enter image description here

相关证书信息如上所示。我也进入了#34; trialca"作为ca.crt的PEM密码。然后,我创建了server.key(我使用" trialsrv"作为密码),server.csr和server.crt; enter image description here; enter image description here

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服务。但是,它无法启动并出错。 enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

生成证书后,运行此命令。 (首先将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

答案 1 :(得分:1)

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