亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

如何在 3 美元的 WiFi 设备上安装安全的嵌入式 Web 服务器

嵌入式开发入门可能既困难又昂贵,但在本文中,我将向您展示如何在具有安全嵌入式 Web 服务器的 WiFi 芯片上启动 FreeRTOS 和 lwIP TCP/IP 堆栈,并在不到 30 分钟的时间内以超低的速度启动成本设备。

为什么要使用支持安全 (TLS) 的服务器?

浏览器已开始在浏览器栏中将标准 (HTTP) 服务器标记为“不可信”(请参见下面的图 2),并且安全服务器对最终客户来说显得更值得信赖。我将在下面的安全注意事项部分详细介绍这一点。

ESP8266 WiFi 芯片和 Minnow 服务器

您可以以低至 1 美元的价格获得 ESP8266,但我建议使用包含 USB 的开发板。刷固件需要USB。如果没有板载 USB,则需要一个额外的步骤,包括使用 USB 到 TTL 转换器。只需 3 美元即可购买带 USB 的即用型 ESP8266 开发板。

低成本的 ESP8266 WiFi 芯片非常适合用于学习目的,但速度较慢,尤其是执行加密等 CPU 密集型任务。当使用 CPU 密集型任务的慢速芯片时,您确实需要考虑设计。

ESP8266 以 80 Mhz 运行,这对于嵌入式芯片来说是很好的,但代码执行速度很慢,通过 SPI 存储器执行代码。当涉及到资源受限微控制器的实际限制时,在此设备上运行启用 TLS 的服务器提供了一个真正的唤醒电话,并很好地介绍了在慢速微控制器上运行的可能性。选择的安全 Web 服务器类型和 Web 应用程序设计对于慢速设备变得至关重要。

在本文中,我将解释如何在 ESP8266 上编译和运行 Minnow Server。 Minnow Server 和参考示例可在 GitHub 上找到。

我最近在embedded.com 上发表了一篇关于Minnow 服务器的文章。本文解释了如何使用 Minnow Server 创建基于 Web 的现代设备管理应用程序。本文还介绍了在使用 TLS 时将 WebSocket 服务器与所谓的单页应用程序 (SPA) 结合使用的好处。我推荐阅读这篇文章,因为我们将为 ESP8266 准备和编译相同的示例代码。

开始使用

我们将使用 esp-open-rtos 项目提供的 ESP8266 FreeRTOS/lwIP 环境,但别担心,您不需要经过复杂的 esp-open-rtos 设置。相反,我们将使用一个预先配置且完全可以使用的环境,以及一个易于使用的基于 Web 的 IDE。

下载 FreeRTOS/lwIP ESP8266 IDE

导航到 Real Time Logic 并下载我们准备好的 ESP8266 IDE。该 IDE 专为教育目的而设计,包括一个预配置的 esp-open-rtos,捆绑了一个易于使用的基于 Web 的 C 源代码 IDE。 IDE 需要 VmWare 或 VirtualBox。我更喜欢 VmWare 而不是 VirtualBox,因为我发现它更易于使用。请注意,VmWare 可免费用于非商业用途。

ESP8266 IDE 还包含一个嵌入式 TLS 堆栈(SharkSSL),Minnow Server 使用 SharkSSL 编译时会自动使用 TLS。

您可以在没有 ESP8266 开发板的情况下开始使用 ESP8266 IDE,但无法上传和运行编译后的代码。换句话说,您可以下载 IDE 并按照本教程中的所有步骤操作,除了在 ESP8266 上运行代码。

下面图 1 中的屏幕截图显示了虚拟机和连接到虚拟机的基于 Web 的 IDE。请注意虚拟机如何获得 ESP8266 USB 连接的所有权。基于 Web 的 IDE 检测到这一点并显示 ESP8266 已连接并准备好使用新固件刷新。

点击查看大图

图 1:基于 Web 的 IDE 连接到虚拟机的 IP 地址。 (来源:实时逻辑)

图 1 中的屏幕截图显示了 ESP8266 通过面包板连接到 LED。除非您想控制示例应用程序使用的外部 LED,否则您不需要额外的 LED 或面包板。

请注意,您的 VM 的 IP 地址很可能与图 1 中的不同。确保单击虚拟机窗口中的 IP 地址。如果窗口是空白的,请单击该窗口,然后按 Enter 键。您必须在浏览器中输入此 IP 地址才能打开 Web IDE。

安装 Minnow 服务器和示例代码

Minnow Server 参考示例不包含在 ESP8266 IDE 中,必须单独安装。图 1 显示了已安装在“ESP/ms”目录中的 Minnow Server 示例。 Minnow Server 必须从 Linux 命令行安装,但如果您没有使用过 Linux,请不要担心。您可以简单地复制和粘贴我们准备好的命令。下图显示了将 Minnow Server 安装命令粘贴到位于 http://vm-ip-address/webshel​​l/ 的 Linux web shell 中的屏幕截图。

点击查看大图

图 2:粘贴到 Linux web shell 中的 Minnow Server 安装命令。 (来源:实时逻辑)

当您在浏览器中输入 web shell 的 URL 时,系统会提示您登录。用户名是sharkssl,密码是SharkSSL。

GitHub 上的 ESP8266 教程解释了如何配置虚拟机、安装所有内容、编译 Web 服务器示例以及刷新固件。以下视频通过逐步解释所有内容来简化流程。

视频 1:如何下载和安装 Minnow Server 示例、编译和上传代码。 (来源:实时逻辑)

安全与非安全

Minnow Server 可在安全或非安全模式下使用,并在与 ESP8266 IDE 和 SharkSSL 一起使用时自动使用安全模式 (TLS)。在设备中使用支持 TLS 的 Web 服务器会增加额外的复杂性,最终用户会承担处理 SSL 证书的管理负担。在上面的视频中,我们展示了如何通过在浏览器中安装证书颁发机构 (CA) 证书来消除浏览器中出现的证书错误。 CA 证书是在 Web 服务器示例中用于签署证书的证书。

嵌入式设备通常安装在受保护的专用网络中,但许多客户仍然要求 Web 服务器连接使用 TLS。在专用网络上使用启用 TLS 的服务器是有问题的,因为没有知名的证书颁发机构会签署 IP 地址或非标准(专用网络)名称。一种选择是成为您自己的证书颁发机构。如果您有兴趣了解更多相关信息,请查看我们的教程如何充当证书颁发机构。

如上所述,ESP8266 很慢。 TLS 非常占用 CPU,您会注意到连接和建立连接需要一些时间。使用 WebSockets 进行通信的 Single Page Application 示例针对 CPU 受限设备进行了优化,但初始非对称加密(TLS 握手)仍然需要时间,特别是对于一些不遵循良好设计实践并打开许多 TCP 连接的浏览器需要完整的 TLS 握手。要详细了解现代网络浏览器和慢速微控制器的问题,请参阅我们的教程使用 Minnow 服务器创建单页应用程序,其中详细介绍了问题。


物联网技术

  1. 如何保护云技术?
  2. 如何在 Google Cloud 上安装 WordPress
  3. 如何确保物联网产品和解决方案的安全
  4. 如何确定您需要哪种类型的 IoT 模块
  5. 模糊测试如何加强物联网设备的安全性
  6. 如何保护 IoT 设备中的 UART 通信
  7. 从网络获取湿度/温度
  8. Raspberry Pi 4 作为 Web 服务器 [制作自己的网站]
  9. IoT 设备嵌入式硬件黑客简介
  10. 什么是 WiFi 通话?它是如何工作的?
  11. 如何安装码头调平器
  12. 服务器自动化如何到达 FANG