TLS 连接的 CA 证书 node02.myqtthub.com/8883

CA certificate for TLS connection node02.myqtthub.com/8883

我正在玩 mqtthub 和 ESP32 芯片。我想以最安全的方式连接,所以我想也许一开始就尝试使用 TLS 连接,后来我也可以加密发送给代理 (mqtthub) 的数据。 我使用 /etc/ssl/certs 路径 成功连接到 linux 上的 mosquitto 到 CA 证书。

我现在想将我需要的证书复制到闪存中,我用 C 编写的应用程序可以在它连接到端口 8883 上的代理时使用它。我怎么猜出哪个 public CA 证书是我需要从 /etc/ssl/certs 复制正确的那个?

PS:我在 mqtthub 论坛上发现了这个: https://decoder.link/sslchecker/node02.myqtthub.com/8883 可能有用吗?

查看从您的服务器返回的证书链,我发现根证书有一个通用名称 DST Root CA X3:

$ openssl s_client -showcerts -connect node02.myqtthub.com:8883
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1                                                       
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = node02.myqtthub.com                                      
verify return:1

我主机中的目录 /etc/ssl/certs 恰好包含一个名为 DST_Root_CA_X3.pem 的证书。这将是一个很好的尝试。

好的,我找到了解决方案。而不是指向整个目录

mosquitto_sub -h node02.myqtthub.com -p 8883 --capath /etc/mosquitto/certs -i linux_machine -u nariox -P myPassword -t test/connection -q 2

i 运行 使用 cafile 而不是 capath 的命令

mosquitto_sub -h node02.myqtthub.com -p 8883 --cafile /etc/mosquitto/certs/DST_Root_CA_X3.crt -i linux_machine -u nariox -P myPassword -t test/connection -q 2

是什么解决了我的问题。如果有人能向我解释为什么,我将不胜感激