ssl - 通过 TLS 连接到 MQTT 服务器的 CA 证书 - iot.eclipse.org

标签 ssl mqtt mosquitto

我想使用客户端证书身份验证连接到 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_pubmosquitto_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/

相关文章:

mqtt - 如果 mosquitto 代理宕机,如何在 mqtt 中保留消息?

python - 为什么我不能在 Raspberry Pi 上使用 python-mosquitto?

mqtt mosquitto 桥水平缩放

node.js - 通过 HTTPS 运行 nodejs 应用程序

php - $_POST 值在 SSL 打开后消失

java - 如何在HiveMQ Client中接收多条消息? (MQTT)

push-notification - 运行 MQTT 服务器的建议

nginx - 无法使用Nginx-ingress升级Kubernetes中的Websocket连接

c# - 机器特定的 HttpWebResponse 超时

java - 带有 undertow servlet 容器的 spring-boot 应用程序中的 "no cipher suites in common"错误