我在玩 mqtthub 和 ESP32 CHIP。我想以最安全的方式连接,所以我想可能会在开始时尝试使用 TLS 连接,稍后我还可以加密发送到代理(mqtthub)的数据。 我使用 /etc/ssl/certs path 到 CA 证书成功地连接到 Linux 上的 mosquitto。
我现在想将我需要的证书复制到闪存中,我用 C 编写的应用程序可以在它连接到端口 8883 上的代理时使用它。我怎么能猜出哪个公共 CA 证书是我需要的正确证书从 /etc/ssl/certs 复制?
PS:我在 mqtthub 论坛上找到了这个: https://decoder.link/sslchecker/node02.myqtthub.com/8883 可能有帮助吗?
答案 0 :(得分:0)
查看从您的服务器返回的证书链,我看到根证书有一个通用名称 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
的证书。这将是一个很好的尝试。
答案 1 :(得分:0)
好的,我找到了解决方案。而不是指向整个目录
mosquitto_sub -h node02.myqtthub.com -p 8883 --capath /etc/mosquitto/certs -i linux_machine -u nariox -P myPassword -t test/connection -q 2
我用 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
什么解决了我的问题。如果有人可以向我解释为什么我将不胜感激