nodeMCU TLS证书错误

时间:2018-07-16 08:12:48

标签: ssl mqtt tls1.2 esp8266 nodemcu

我正在构建真正简单的IoT项目,并且遇到了nodeMCU TLS问题。我在Raspberry pi上安装了MQTT代理,所有证书均已正确插入(与同一树莓上的Paho Client或远程PC上的Mqtt.fx客户端都可以正常使用),但是当我尝试将ESP8266与nodeMCU连接时,我正在获取SSL握手错误(是的,我为所有提到的客户端使用相同的证书文件)。我的ESP8266代码如下所示:

    tls.cert.verify([[
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
    ]])

    m:connect(config.HOST, 8883, 1, function(con) 
        print("Connected to MQTT broker")    
        register_myself()
        -- And then pings each 1000 milliseconds
        tmr.stop(6)
        tmr.alarm(6, 1000, 1, send_ping)
    end, handle_mqtt_error)

我从m:connect收到错误代码 -5(mqtt.CONN_FAIL_SERVER_NOT_FOUND),但是当我使用Wireshark分析数据包时,TLS握手看起来像这样:

  
      
  • 客户您好
  •   
  • 服务器您好
  •   
  • 证书,服务器Hello完成
  •   
  • TLSv1.2记录层:警报(级别:致命,描述:未知CA)
  •   

在ESPlorer控制台中也有这行: E:M 544 ,我真的不知道那是什么意思。

2 个答案:

答案 0 :(得分:1)

万一有人遇到同样的事情,我的问题实际上是由项目其他部分的高内存使用引起的,我在应用程序层上使用AES加密,没有它,一切工作正常。

答案 1 :(得分:0)

ESP8266太慢,无法可靠地使用证书。您应该升级到ESP32或对它有更多支持的东西。

请参阅以下PDF的3.2节,参考ESP8266的SSL握手失败。这看起来与您的问题类似。您确实必须具有创造力和精益才能使其可靠地工作,这降低了您制作的产品的价值。因此,可能不值得麻烦。

https://www.espressif.com/sites/default/files/documentation/5a-esp8266_sdk_ssl_user_manual_en.pdf

此外,请尝试使用TLS 1.1来查看其功能。它可能不支持TLS 1.2。