假设


IoT设备实际上是可安装在支持的操作系统上的软件,例如Windows或Linux。将其命名为软件设备。
注册用户可以下载该软件设备。
客户可以通过一些管理面板来管理其软件设备的机群。
下载和安装对于最终客户,软件设备应尽可能免维护。
AWS IoT Core将成为基本平台。

工作流程

客户下载软件-设备,将其安装在计算机上并运行。首次运行软件设备时,它尚未连接到网络,也没有客户的帐户。连接和管理将由AWS IoT进行处理,但要连接到AWS IoT,设备必须具有有效的证书。

其目的是显示客户必须在管理中输入的一些数字代码。面板(就像将Android TV连接到您的Google帐户-电视显示您在google.com/device上输入的代码)。在后台系统中将识别设备,将其附加到客户的帐户并进行配置(设置证书,IoT终结点和任何其他配置)。 />
软件设备首先连接到WebSockets,然后发送元数据,包括显示给用户的数字代码
当用户在管理面板中输入代码时,一些后台作业会验证其是否有效并且证书是否有效生成并发送到软件设备(通过WebSocket连接)
设备可以使用收到的证书连接到AWS IoT
客户可以管理其设备

关注点

我正在考虑在尚未配置设备时如何保护与WebSocket的连接?我现在附带的内容:


只设置一些速率限制就不要保护此端点。
在构建阶段设置一些令牌。
在软件设备源中包含一些证书(由不同客户为所有下载的软件设备提供一个证书)。
在请求下载时生成带有专用证书的自定义构建(构建需要一些时间,因此可能使客户感到沮丧) 。

您如何看待?如何正确处理或至少以最佳方式进行处理?

评论

我会在第一次使用时在用于认证合法所有者的设备上拥有一个密码。