用于Java的MQTT的TLS/SSL连接
我正在使用MQTT协议。我配置了它的服务器,并在端口1883上使用它的mosquitto库在java中执行了通信。 现在我想让这个通信更加安全。我知道的是端口8883被保留用于基于tls的安全通信。 它需要X.509 certiicates。 为此我找到了以下教程。用于Java的MQTT的TLS/SSL连接
但我的问题是
1.how才能生成在Java代码中这些证书?
2.如何一次使用多个证书?根据上述教程,我们只能在服务器的mosquitto.conf文件中一次只指定一组证书,然后我们需要重新启动服务器。我不想这样做。)
3.我们可以让运行的服务器知道这些新生成的证书。除了在服务器的conf文件中指定之外,还有其他办法吗?
好吧,我想你已经错过了解如何证书认证工作。
有2个部分它(证明经纪人是它说这是谁,然后证明连接客户端是谁)
首先代理将有1个证书,它标识到世界各地。您可以将Mosquitto配置为在启动时使用此证书,而不需要更改它。此证书将由CA签署。
传感器(客户)将拥有CA证书的副本,当他们连接到经纪人以确保其声称是谁时,他们将使用该证书的副本。
其次,如果您想使用客户端证书来识别单独的传感器,那么它们也都需要证书。通常情况下,这将由经纪人证书在同一个CA上签字,以便经纪人可以验证客户是他们自称的客户。蚊子可以设置为使用证书中的CN(use_identity_as_username true
)作为连接客户端的用户名,然后您可以使用mosquitto_auth_plugin跟踪证书中的CN,并应用ACL来控制谁可以使用哪些主题。
至于使用Java创建的证书,我建议你看一下这个question
没有必要当你发出一个新的证书重新启动Mosquitto。
moreiver,我想知道我们可以在java中启动任何mqtt代理吗? – Sadaf
为什么要使用多个证书? – hardillb
如果我在不同的使用情况下使用多个传感器,并且每个传感器在同一个代理上与不同的主题进行通信。 – Sadaf