【发布时间】:2017-02-07 03:22:36
【问题描述】:
实际上,我想使用 Arduino IDE 使用 ESP8266 通过 TLS 实现 MQTT SECURE Client,并想检查是否首先在 CMD 线上工作。但它似乎不适用于 CMD 行本身。
如果是错误或缺少任何配置,请告诉我。我需要尽快修复它。
我关注了https://mosquitto.org/man/mosquitto-tls-7.html 网页 生成证书颁发机构证书和密钥。
openssl req -new -x509 -days 1095 -extensions v3_ca -keyout ca.key -out ca.crt
生成客户端密钥。
openssl genrsa -des3 -out client.key 2048
生成证书签名请求以发送给 CA。
openssl req -out client.csr -key client.key -new
将 CSR 发送给 CA,或使用您的 CA 密钥对其进行签名:
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 1095
//local.conf 文件
bind_address 127.0.0.1
port 8883
tls_version tlsv1
cafile C:\OpenSSL-Win64\bin\ca.crt
certfile C:\OpenSSL-Win64\bin\client.crt
keyfile C:\OpenSSL-Win64\bin\client.key
require_certificate true
//一个CMD窗口
mosquitto_sub -h 127.0.0.1 -p 8883 -q 1 -t sensor/temp --cafile C:/OpenSSL-Win64/bin/ca.crt
//第二个CMD窗口
mosquitto -c local.conf -v
我收到以下错误:
错误:发生 TLS 错误 &
C:\Program Files (x86)\mosquitto>mosquitto -c mosquitto_m2mqtt.conf -v
1486436916: mosquitto version 1.4.10 (build date 24/08/2016 21:03:24.73) starting
1486436916: Config loaded from mosquitto_m2mqtt.conf.
1486436916: Opening ipv6 listen socket on port 8883.
1486436916: Opening ipv4 listen socket on port 8883.
Enter PEM pass phrase:
1486436943: New connection from 127.0.0.1 on port 8883.
1486436943: OpenSSL Error: error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
1486436943: OpenSSL Error: error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure
1486436943: Socket error on client <unknown>, disconnecting.
【问题讨论】:
-
您正在使用客户端证书/密钥来识别 local.conf 中的服务器,而不是您链接到的文档中描述的服务器证书/密钥。
-
我不明白。您的意思是在侦听传入客户端时,我们使用的 local.conf 文件应该具有与 ESP8266 代码中使用的客户端证书/密钥文件不同的服务器证书/密钥文件?从通用 ca.crt 文件创建的客户端和服务器证书/密钥文件??
-
但是我得到了同样的“证书验证失败”错误,即使现在我正在监听从现有 ca.crt 和 ca.key 生成的 server.crt 和 server.key 文件。
-
@JyotiRajSharma 你能解决这个问题吗?