我花了几个小时为我的树莓中的蚊子经纪人设置TSL连接。现在,我可以使用客户端证书、客户端私钥和ca证书在客户端(在树莓上(中发布和订阅主题。它工作正常。
现在我想在ESP32(IDF平台(中创建客户端。我从一个名为ssl_mutual_auth的示例开始。不幸的是,在该示例中使用了客户端证书、客户端私钥和服务器证书,而不是ca证书。所以…我很困惑,不知道如何管理esp32客户端(或Mosquito客户端(中的ca.crt文件。我需要更改我的证书或我的蚊子配置吗?我用这个指南来配置我的蚊子经纪人:https://medium.com/himinds/mqtt-broker-with-secure-tls-communication-on-ubuntu-18-04-lts-and-an-esp32-mqtt-client-5c25fd7afe67
Mosquiitt.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-创建一个服务器密钥,Servers csr,然后是Server.crt(用ca.crt签名(
3-创建客户端密钥、客户端csr,然后创建客户端.crt(使用ca.crt签名(
在树莓客户端,我用这个发布:
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
ESP IDF文档在PKI术语方面存在一些问题。我敢肯定,当他们说";服务器证书";他们真的是说";链中验证服务器身份的任何证书:CA、中间证书或服务器证书;。他们在HTTPS客户端文档中也犯了同样的错误。
不管怎样,只需将您的CA证书输入ESP示例项目并试用即可。请确保它是PEM格式的-查看此答案以了解详细信息。如果需要,请使用openssl进行转换。