【问题标题】:How to provide SSL/TLS based communication on Mosquitto?如何在 Mosquitto 上提供基于 SSL/TLS 的通信?
【发布时间】:2016-03-17 13:17:45
【问题描述】:

我正在开发一个使用 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 服务。但是,它无法启动并出现错误。

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

【问题讨论】:

    标签: ssl openssl mosquitto


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议,但问题中存在一些不同之处。我已经解决了,谢谢。
    【解决方案2】:

    今天下午我也遇到了同样的问题。我通过删除服务器密钥中的密码来解决它。命令行 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

    【讨论】:

    • 实际上,删除密码可能不是一个正确的解决方案,但它让我继续前进。非常感谢你:)
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多