gpt4 book ai didi

ssl - mosquitto_pub 拒绝 iot.eclipse.org mqtt 服务器证书说 "Unknown CA"

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:08 25 4
gpt4 key购买 nike

我正在尝试在 Ubuntu Linux 机器上运行 mosquitto_pub,如下所示:

vbhadra@vbhadra-VirtualBox:~$ mosquitto_pub  -h iot.eclipse.org -p 8883 --capath /etc/ssl/certs/ -t house/s1 -m "test message" -d
Client mosqpub/9204-vbhadra-Vi sending CONNECT
Client mosqpub/9204-vbhadra-Vi received CONNACK
Client mosqpub/9204-vbhadra-Vi sending PUBLISH (d0, q0, r0, m1, 'house/s1', ... (12 bytes))
Client mosqpub/9204-vbhadra-Vi sending DISCONNECT

可以看到mosquitto_pub 工程文件。现在我想尝试手动下载 iot.eclipse.org 证书,然后将其与 mosquitto_pub 一起使用,而不是使用 Ubuntus/etc/ssl/certs/certificate。

所以我做了以下:

ex +'/BEGIN CERTIFICATE/,/END CERTIFICATE/p' <(echo | openssl s_client -showcerts -connect iot.eclipse.org:8883) -scq > file.crt

将 file.crt 保存在以下位置:/home/vbhadra/remote_certificate/。

现在,我再次尝试以下操作:

mosquitto_pub  -h iot.eclipse.org -p 8883 --capath /home/vbhadra/remote_certificate/ -t house/s1 -m "test message" -d 

但是上面的失败很惨。通过捕获 tcpdump,我可以在 Wireshark 中看到我的 Ubuntu 客户端正在将“致命:未知 CA”发送回 iot.eclipse.org。

根据我目前的了解,我可以认为该证书未由任何 CA 签名,因此 mosquitto 客户端拒绝了它。我一直在试图弄清楚如何才能获得证书签名(自签名??),但到目前为止还没有任何线索。

我尝试验证我保存的证书文件 file.crt 与 openssl verify 如下:

openssl verify -CApath /home/vbhadra/remote_certs/ /home/vbhadra/remote_certs/file2.crt  
/home/vbhadra/remote_certs/file2.crt: CN = iot.eclipse.org
error 20 at 0 depth lookup:unable to get local issuer certificate

此时我有点迷茫。人们似乎建议将 .pem 证书文件与 openssl 验证一起使用,但不确定该怎么做,基本上我迷路了。请帮助任何指针进一步采取它。

最佳答案

当你运行 echo | openssl s_client -showcerts -connect iot.eclipse.org:8883 命令并查看输出,它包含多个证书,我认为这可能与您使用 ex 分割它的方式有关。

您将需要这两个证书来提供完整的证书链来验证 iot.eclipse.org 的最终用户证书。

您是否在包含 ca 文件的目录中运行了 ca_rehash(或 ubuntu 上的 c_rehash)?

--capath

Define the path to a directory containing PEM encoded CA certificates that are trusted. Used to enable SSL communication.

For --capath to work correctly, the certificate files must have ".crt" as the file ending and you must run "c_rehash " each time you add/remove a certificate.

我不得不将文件重命名为以 .pem 结尾(因为它们实际上是这样的)并将 DST_Root_CA_X3.pem 文件复制到 ca 目录中/etc/ssl/certs 也是如此。

此外,如果您想使用自己的私有(private) CA,那么使用 --cafile 可能会更简单一些。

关于ssl - mosquitto_pub 拒绝 iot.eclipse.org mqtt 服务器证书说 "Unknown CA",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com