我正在开发一个使用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证书);
相关证书信息如上所示。我也进入了#34; 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服务。但是,它无法启动并出错。
我做错了什么吗?我需要你的建议来解决这个问题。
答案 0 :(得分:2)
今天下午我有同样的问题。我通过剥离服务器密钥中的密码来解决它。命令行exe不需要pw,服务启动时没有出现该错误。
生成证书后,运行此命令。 (首先将server.key重命名为server.key.org)
openssl rsa -in server.key.org -out server.key
答案 1 :(得分:1)
如果您已经从命令行启动了一个mosquitto实例,那么将其作为服务启动将无法正常工作,因为第一个已经使用相同的配置运行。