如何在 NodeMCU Lua 中使用 TLS 协议

我最近在使用 ESP8266 模块进行项目开发。该模块上的固件为 NodeMCU 0.9.6,使用的语言是 Lua。我使用 MQTT 协议进行项目通信,目前已经可以正常工作。但是现在需要使用 TLS 协议,我却不知道该如何在固件中配置。

我查找过 NodeMCU 官网上的相关文档,但发现并不足够详细。按照官网文档的说明,在与服务器进行连接时应该使用以下方式:

m:connect(BROKER, 8883, 1, function(connection) ... end)

同时我还需要将 CA 文件放置在模块上,类似这样:

enter image description here

这些都是从 NodeMCU 官网上的文档中了解到的,具体文档链接为:https://nodemcu.readthedocs.io/en/master/en/modules/net/#netcertverify

但是在实际的代码中,我将以上内容配置好后,上传到模块后会报错,导致无法运行。这是因为我的固件版本太旧吗?需要进行固件升级吗?或者是我在代码中还有什么错误吗?

我尝试在其他项目中找到关于在模块上放置 CA 文件的示例代码,但是并没有找到任何相关信息。如果您之前有使用过 TLS(在 NodeMCU 固件上)的经验并能提供帮助,我会非常感激。

点赞
用户131929
用户131929

你余下的代码看起来不错。

2016-09-16 21:41:59
用户2635070
用户2635070

请查看这个问题,并阅读答案中的评论。

您可能需要从最新的 SDK 获取 esp_init_data_default.bin。

我使用了 esptool。

esptool.py --port <PORT> write_flash -fm dio -fs 32m 0x00000 <BIN_PATH_AND_FILENAME> 0x3fc000 <PATH\>esp_init_data_default.bin

如果您发现这篇文章有用,请点赞这篇帖子。感谢 @MarcelStör。

2016-09-21 17:38:36