假设
- 物联网设备实际上是一种可安装在支持的操作系统上的软件,例如 Windows 或 Linux。让我们将其命名为 Software-Device。
- 软件设备可供注册客户下载。
- 客户可以通过一些管理面板管理他们的软件设备群。
- 对终端客户来说,下载和安装软件设备应尽可能免维护。
- AWS IoT Core 将成为基础平台。
工作流程
客户下载软件设备,将其安装在计算机上并运行。当软件设备第一次运行时,它还没有连接到网络,也没有连接到客户的帐户。连接和管理将由 AWS IoT 处理,但为了连接到 AWS IoT,设备必须具有有效证书。
这个想法是显示客户必须在管理面板中输入的一些数字代码(就像将 Android TV 连接到您的 Google 帐户 - 电视显示您在 google.com/device 上输入的代码)。在后台系统将识别设备,附加到客户的帐户并提供它(设置证书、IoT 端点和任何其他配置)。
从技术角度来看,这可能如何?
- 软件设备首先连接到 WebSockets 并发送元数据,包括显示给用户的数字代码
- 当用户在管理面板中输入代码时,一些后台作业会验证它是否有效并生成证书并发送到软件设备(通过 WebSocket 连接)
- 设备可以使用收到的证书连接到 AWS IoT
- 客户可以管理他们的设备
关注
我正在考虑如何在尚未配置设备时保护与 WebSocket 的连接?我现在带来的:
- 不要保护这个端点只是设置一些速率限制。
- 在构建阶段设置一些令牌。
- 在软件-设备源中包含一些证书(不同客户下载的所有软件-设备的一个证书)。
- 在请求下载时使用专用证书生成自定义构建(构建需要一些时间,因此这可能会让客户感到沮丧)。
你怎么看待这件事?这应该如何正确处理或至少是最好的方式?