【发布时间】:2021-04-17 23:30:47
【问题描述】:
我花了几个小时在我的树莓派中为我的 mosquitto 代理设置 TSL 连接。现在我可以使用客户端证书、客户端私钥和 ca 证书在客户端(在树莓上)发布和订阅主题。它工作正常。
现在我想在 ESP32(IDF 平台)中创建客户端。我从名为 ssl_mutual_auth 的示例开始。不幸的是,示例中使用了客户端证书、客户端私钥和服务器证书,而不是 ca 证书。所以..我很困惑,我不知道如何在 esp32 客户端(或 Mosquitto 客户端)中管理 ca.crt 文件。我需要更改我的证书或我的 mosquittos 配置吗?我使用本指南来配置我的 mosquitto 代理:https://medium.com/himinds/mqtt-broker-with-secure-tls-communication-on-ubuntu-18-04-lts-and-an-esp32-mqtt-client-5c25fd7afe67
这里是我设置证书路径的 Mosquitto.conf 详细信息:
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
allow_anonymous false
password_file /etc/mosquitto/passwords
include_dir /etc/mosquitto/conf.d
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate true
use_identity_as_username true
我做了什么:
1-创建 CA 机构(用于自签名证书)
2-创建一个Server Key,Servers csr,然后server.crt(用ca.crt签名)
3-创建一个Client Key,Client csr然后client.crt(用ca.crt签名)
在 raspberry 客户端中,我使用它来发布:
mosquitto_pub -t "test" -m "hello" -d --cert client.crt --key client.key --cafile ca.crt --insecure
我用它来订阅:
mosquitto_sub --cafile ca.crt -t "#" -d --cert client.crt --key client.key
【问题讨论】:
-
由于您没有共享配置,因此很难评论是否需要更改配置。请在您的问题中包含您的 Mosquitto 配置文件。
-
@romkey 谢谢,我在问题中添加了更多细节
-
真的不清楚你在这里问什么。您提供的链接中的示例使用 CA 证书来验证代理而不是服务器证书。这应该是正确的工作方式。
-
@hardillb 是的,这就是我感到困惑的原因。在 esp32 示例中(我想植入客户端)可以指定:客户端密钥、客户端 crt 和服务器 pem。我想他们所说的 server.pem 是 CA 证书。但是我怎样才能将 CA crt 转换为 pem 文件呢?
-
文件扩展名是任意的,你需要去研究一下PEM vs DER证书编码,如何识别它们以及可以使用哪些openssl命令在它们之间进行转换。