ssl - MQTT Mosquitto SSL/TLS 无法连接 CA.der 但可以连接 CA.pem

标签 ssl openssl mqtt tls1.2 mosquitto

我有一个简单的问题,我希望有一个简单的答案!我可以使用 .pem 格式的证书颁发机构连接并发布/订阅我的代理。例如命令:

mosquitto_pub --cafile CA.pem -h www.example.com -p 8883 -t test -u "usr" -p "pw" 

成功了。但是,当我使用

CA.pem 转换为 CA.der
openssl x509 -in CA.pem -out CA.der -outform DER 

并使用 CA.der 作为 --cafile 我得到一个错误:

Unable to connect (A TLS error occurred.).

我相信转换是正确的,因为如果我使用 openssl x509CA.der 转换回 CA2.pem 我可以成功连接。我的猜测是我必须在我的 mosquitto.conf 文件中设置一些东西以允许 *.der 或类似的东西,但在文档中找不到任何解决这个问题的东西,或在线任何地方。我需要使用 .der 格式,因为我在 TI CC3200 开发板上设置 MQTT 客户端,TI 的 API 需要 .der 格式的所有证书。

一些额外的信息以备不时之需

我通过 CertBot 为我的域获取了 CA,证书链如下所示:

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 = <www.example.com>
verify return:1

mosquitto.conf

allow_anonymous false
password_file /etc/mosquitto/passwd

listener 1883 localhost

listener 8883
certfile /etc/letsencrypt/live/<www.example.com>/cert.pem
cafile /etc/letsencrypt/live/<www.example.com>/chain.pem
keyfile /etc/letsencrypt/live/<www.example.com>/privkey.pem

最佳答案

不,mosquitto 只支持提供 PEM 格式的证书,您不能使用 DER 文件。

没有什么可说的,您必须在代理端使用与客户端相同的证书存储格式 (PEM/DER)。

关于ssl - MQTT Mosquitto SSL/TLS 无法连接 CA.der 但可以连接 CA.pem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143326/

相关文章:

Delphi 7 和 Indy 9.0 连接 SSL 时出错

c# - 在 C# 中临时加载用于客户端身份验证的 SSL 客户端 key

java - 如何读取 .pem 文件以获取私钥和​​公钥

SSL证书中间CA

python - 在 spark 版本 2.2.0 中使用 python(pyspark) 从 mqtt 获取数据流

java - 面对 javax.net.ssl.SSLHandshakeException : Received fatal alert: bad_certificate issue while implementing SSL two way authentication

ssl - 使用 terraform 时的 tls 未签名证书

用于清理 openssl EVP_PKEY 私钥内存的 C 代码

swift - 'ViewController' 不能转换为 'CocoaMQTTDelegate' 吗?

azure iothub直接方法未按预期工作