当前位置: 首页 > 知识库问答 >
问题:

nodeMCU TLS证书错误

范翰海
2023-03-14

我正在建设一个真正简单的物联网项目,我被困在nodeMCU TLS问题上。我的Raspberry pi上有MQTT broker,所有证书都正确插入(在同一Raspberry上使用Paho客户端或在远程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握手如下所示:

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

同样在ESPlorer控制台有这样一行:E:M 544,我真的不知道这意味着什么。

共有2个答案

郏佐
2023-03-14

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。

元彦君
2023-03-14

如果有人遇到同样的事情,我的问题实际上是由我的项目的其他部分的高内存使用率引起的,我使用AES在应用层加密,没有它一切都很好。

 类似资料:
  • null 但我想知道有没有办法解决这个问题...

  • 当我想要在cPanel上安装证书时,我会看到以下错误: 错误证书验证失败! 已执行/usr/bin/openssl verify-capath/var/cpanel/ssl/installed/cabundles: stdin:CN=example.com 0深度查找时错误20:无法获取本地颁发者证书

  • 问题内容: 我遇到客户端https请求的问题。 片段可以如下所示: 我得到的是错误:证书链中的自签名证书。 使用邮递员时,我可以导入客户端证书和密钥,并且可以毫无问题地使用它。有没有可用的解决方案?我还希望对邮递员如何处理证书和工作方式有所了解。 问题答案: 根据您的问题,我想您正在使用SSL通讯的自签名证书进行开发。 如果是这种情况,请在您正在运行节点的任何地方或直接使用 这指示节点允许不信任的

  • 我快被这个问题弄疯了。我在Laravel上有两个站点在https上互相调用(用OAUTH2登录,passport/sociate)。两者都安装在我的本地开发服务器上,在MAMP,MAMP自动签名的证书。 我到处都能找到这个解决方案:把cacert.pem文件放在某个地方,把路径写在php.ini中 完成,Apache重新启动,设置正确地出现在两个站点的phpinfo()中。然而,错误依然存在。有人

  • 问题内容: 我尝试将带有正确APP_ID,APP_SECRET等的curl请求发送到 我需要从中获取access_token,但需要返回FALSE并打印下一条消息: 我的代码是: 当我手动移动到上面的链接时,我会很好地获得access_token。为什么卷曲不起作用?请帮助。 问题答案: 建议禁用的答案不被接受。问题是“为什么它不适用于cURL”,正如Martijn Hols正确指出的那样,这很危

  • 我尝试将带有正确应用程序ID、应用程序机密等的curl请求发送到 我需要从中获取访问令牌,但获取FALSE和print next message,否则: 我的代码是: 当我手动移动到上面的链接时,我很好地获得了访问权。为什么卷曲不起作用?请帮忙。