gpt4 book ai didi

java - Java 中 MQTT 的 TLS/SSL 连接

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:03 24 4
gpt4 key购买 nike

我正在研究 MQTT 协议(protocol)。我配置了它的服务器,并在端口 1883 上使用它的 mosquitto 库在 java 中执行了通信。现在我想让这种通信安全。我知道端口 8883 是为基于 tls 的安全通信保留的。它需要 X.509 证书。为此,我找到了以下教程。

http://www.embedded101.com/Blogs/PaoloPatierno/entryid/366/mqtt-over-ssl-tls-with-the-m2mqtt-library-and-the-mosquitto-broker

但我的问题是

1.我们如何在java代码中生成这些证书?

2.我们如何一次使用多个证书。根据上面的教程,我们可以在服务器的mosquitto.conf文件中一次只指定一组证书。然后我们需要重新启动服务器。(即我不想做。)

3.我们如何让正在运行的服务器知道这些新生成的证书。除了在服务器的 conf 文件中指定之外,还有其他方法可以做到这一点吗?

最佳答案

好的,我想您还没有理解证书身份验证的工作原理。

它有两个部分(证明经纪人是它所说的人,然后证明连接的客户端是谁)

首先,经纪人将拥有 1 个向全世界标识它的证书。您将 Mosquitto 配置为在启动时使用此证书,并且永远不需要更改它。该证书将由 CA 签名。

传感器(客户端)将拥有 CA 证书的副本,当它们连接到代理时将使用该副本以确保它是它声称的身份。

其次,如果您想使用客户端证书来识别单独的传感器,那么它们也都需要一个证书。通常这将由与经纪人证书相同的 CA 签名,因此经纪人可以验证客户是否是他们声称的身份。可以将 Mosquitto 设置为使用证书中的 CN (use_identity_as_username true) 作为连接客户端的用户名,然后您可以使用 mosquitto_auth_plugin跟踪证书中的 CN 并应用 ACL 来控制谁可以使用哪些主题。

至于在 Java 中创建证书,我建议您查看此 question

颁发新证书时无需重新启动 Mosquitto。

关于java - Java 中 MQTT 的 TLS/SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com