我正在部署大量 ESP32 设备,这些设备将通过 HTTPS 与我们自己部署的服务器进行通信以获取数据和更新。它还将通过 mqtts 与我们的经纪人进行通信。
我想知道在 ESP32 中存储证书的最佳实践是什么,并且有几个问题。
请原谅我对信任链和证书的运作方式缺乏了解。任何帮助或指导将不胜感激。谢谢你。
说实话,对于初学者来说,最大的挑战是找到一篇描述 PKI 和 x509 的好文章,但又不能太浅薄(就像 google 结果的前 2 页那样)。也许这个是一个很好的起点。
假设您正在讨论验证服务器的身份,HTTPS 客户端可以选择在
cert_pem
中提供预期的服务器证书 - 这是您与自签名 PKI 一起使用的证书。 快速谷歌搜索表明这需要提供根或中间服务器证书,而不是叶证书。此外,还有一个额外的选项可以在 common_name
中验证服务器的通用名称,您可能会与“官方”PKI 一起使用。
MQTT 客户端具有类似的验证方法,可与自签名 PKI 配合使用。
如果不涉及第三方客户端,拥有自签名的 PKI 是完全可以的。
您的根证书的过期需要一些考虑。我将其设置为 50 年,这样我就不会获得无法及时更新过期证书的孤立设备(因为它们没有连接到互联网)并永远切断服务。您仍然需要预见根证书轮换,只需记住孤儿证书即可。
我没有经验,但一般来说,当您想让第三方验证您的服务时,需要购买证书。它们的有效期肯定相当短,存在创建孤儿设备的风险。