【发布时间】:2020-12-01 00:40:52
【问题描述】:
第一次发帖,如果我的礼节不够到位,请见谅!
我在理解证书颁发机构如何在不同的机器之间工作时遇到了一些麻烦,特别是在 MQTT 和蚊式代理方面。
我已经使用this link 生成了我的服务器和客户端证书,并让它们在本地主机上工作得非常好。对于服务器,我使用通用名称 RPi-Host,即主机名,对于客户端,我使用“localhost”。下面给出了我用来为客户端生成 CA 的代码示例,其中 %NAME 只是证书的名称:
Generate Key with:
$ openssl genrsa -out <%NAME>.key 2048
Generate certificate request with:
$ openssl req -out <%NAME>.csr -key <%NAME>.key -new
Link to main CA:
$ openssl x509 -req -in <%NAME>.csr -CA ../ca/ca.crt -CAkey ../ca/ca.key -CAcreateserial -out <%NAME>.crt -days 365
假设我生成了 client 和 client2 证书,然后我可以在 RPi-Host 上的 2 个不同终端中运行以下命令,并且连接完全没有问题:
Subscribe to MQTT broker:
$ mosquitto_sub -p 8883 --cafile ca.crt --cert client2.crt --key client2.key -h localhost -t /world
Publish to MQTT broker:
$ mosquitto_pub -p 8883 --cafile ../ca/ca.crt --cert client.crt --key client.key -h localhost -m hello! -t /world
但是,如果我将 -h localhost 更改为 192.168.0.190,即 IP 地址,我立即得到:
Error: A TLS Error occurred.
...这不是很有帮助!
我们的目的是尝试从一台单独的机器上连接到它,但是我只是想在同一台机器上使用自己的 IP 地址来连接它!生成证书时,我是否需要在通用名称中添加一些花哨的东西?遗憾的是,我还没有找到一个教程来回顾在两台不同的机器上使用 mosquitto 和 TLS 进行连接。
任何指针表示赞赏,如果我错过了明显的,非常抱歉!
亚历克斯
【问题讨论】: