我想使用客户端证书身份验证连接到 ssl://iot.eclipse.org:8883。
如何获取CA证书?
我是否需要使用提供的 CA 证书生成我自己的客户端证书。 或者客户端证书也与 CA 证书捆绑在一起。
最佳答案
使用 openssl
检查 iot.eclipse.org 的证书是否来自 Let's Encrypt项目。
$ openssl s_client -showcerts -connect iot.eclipse.org:8883CONNECTED(00000003)
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/CN=iot.eclipse.org
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
因此您应该能够使用大多数现代操作系统/应用程序中设置的标准 CA 检查此证书是否有效。
由于明显的原因,您将无法获得 CA 证书/私钥来生成您自己的客户端证书,并且他们不会颁发客户端证书(并且假设 eclipse.org 代理设置为进行身份验证具有相同 CA 的客户端,则不必如此)。
此外,针对此代理进行身份验证也没有意义,因为您无法设置 ACL 来控制哪些用户可以订阅/发布特定主题,因为它是一个公共(public)演示代理。如果您想安全访问,那么您将必须运行自己的公共(public)经纪人
编辑:您不想进行客户端证书身份验证,您只想验证服务器证书,这是非常不同的。
要使用 mosquitto_pub
或 mosquitto_sub
执行此操作,您必须指定 CA 证书或多个证书目录的路径,以便为连接启用 ssl/tls .如果您使用私有(private) CA,您将指定一个单独的 CA 证书,但由于 iot.eclipse.org 代理使用众所周知的公共(public) CA,您需要指定 CA 证书系统集合的路径。
在 Linux 上是 /etc/ssl/certs
,因此您可以按如下方式发布:
mosquitto_pub -h iot.eclipse.org -p 8883 --capath /etc/ssl/certs/ -t testing/ben -m foo
关于ssl - 通过 TLS 连接到 MQTT 服务器的 CA 证书 - iot.eclipse.org,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435311/