技术文件: 固件更新
更新过程适用于任何类型的更新(例如:固件更新、配置更新或应用程序更新)。 在由Proficloud的更新服务控制的不同阶段进行更新。 向UI透明地报告每个步骤。
阶段
更新请求命令
在第1阶段,会询问设备固件是否允许和可以从云端使用给定的元数据(更新类型、更新版本和更新规模等)进行更新。 设备固件检查设备上的可用空间、升级或降级规定和状态(例如,在PLC上运行状态),并响应“允许”或“不允许”。
下载请求
应下载请求,将通过临时签名的HTTP端点进行实际下载(通过TLS服务器认证)。 如果下载成功,设备响应成功消息。
下载检查请求
下载成功后,将通过设备专用工具检查下载完成的图片。 例如,使用PLCnext实施工具检查sha256校验和,以及用于固件更新的Rauc束的签名。 将向Proficloud报告检查结果。
安装请求
最后一个请求涉及实际安装更新内容。 只有在确认安装成功后(可能需要自动重启),设备会响应成功安装更新内容。
安全
为尽可能安全地设计更新过程,每个命令都有几个安全特征:
- 命令包含触发日期和到期日期: 时间是非常重要的安全因素。 如果设备的系统时间错误,则TLS证书无法得到正确验证。 除此之外,触发日期和到期日期能够防止攻击者比应该的时间更晚发送捕获完成命令。
- 已签署的命令:从Proficroud发送的每个命令都由与单个组织账户相关的CA签名(https://tools.ietf.org/html/rfc7515)。在手动将公共CA证书传送到设备中后,设备能够验证收到的命令是由Proficloud的指定账户发送的。
- 受到TLS保护的连接: 通过客户证书认证,对Proficloud和设备之间的整个MQTT通信作了TLS保护。