我的公司将在其设备中使用 ESP32。我必须编写允许从 HTTPS 服务器下载 ESP32 OTA 更新的代码。TLS 服务器的根证书每年过期一次。我的问题是:如果证书已过期,我如何安全地从服务器下载新证书?如果证书过期,我将失去对 ESP 的远程控制,无法向其上传新文件。例如,据我所知,Chrome 或 Firefox 等 Web 浏览器会更新其 CA 存储,而用户甚至不会注意到这一点。是否可以在 ESP32 上实现该功能?
我唯一的想法是连接到第二个使用 HTTP 而非 HTTPS 的网站,然后下载新证书。但我必须一直使用 TLS,所以这个解决方案是不可接受的。我是网络技术的新手,非常感谢您的帮助和提示!
您确定服务器使用的是根证书,而不是某个中间证书吗?浏览器和嵌入式设备之间的区别在于,无论您当前的版本有多旧,您仍然可以使用简单的离线安装程序更新浏览器。对于嵌入式设备,OTA 服务器是唯一的生命线 - 如果设备无法与服务器通信,则无法更新。它会变成僵尸,只能通过电缆进行更新,这通常是不可行的。
如果您的嵌入式设备的 OTA 依赖于具有 1 年根证书的 PKI,我会说您处境不好。这要求每个设备在前一个根证书轮换之前无一例外地更新其根证书,任何留下的设备都是僵尸。如果您确定可以在截止日期之前更新所有设备,请继续这样做。注意那些几个月没有互联网访问的设备(例如,因为它们放在仓库里)。
以下是我按照个人偏好顺序列出的解决方案:
你可以用任意数字 X 替换 50 年,如果:
我一直在努力寻找有关 X.509 证书和链的优质参考资料(谷歌搜索结果中 90% 都是浅显的销售文章)。我可以向您推荐一篇文章《图解 X.509 证书》和维基百科页面