减少受限设备所需的根证书列表



我正在开发一个内存受限的物联网设备,并希望通过MQTT将其连接到Google IoT Core。必须信任以允许服务器 TLS 证书验证的必需根证书列表很长。我正在寻找一个较小的列表,该列表适用于资源有限的物联网设备,但不会突然停止工作。有没有办法安全地减少此所需证书列表?

在"设备安全建议"部分下的联机文档 (https://cloud.google.com/iot/docs/concepts/device-security) 中指出:

'与 mqtt.googleapis.com:8883 通信时使用 TLS 1.2(或 :443),并使用根证书颁发机构验证服务器证书是否有效。阅读此安全说明,了解详细的TLS要求和未来的兼容性。

在安全说明(https://security.googleblog.com/2015/09/disabling-sslv3-and-rc4.html)中,它指出:

"至少 https://pki.google.com/roots.pem 中的证书必须信任。

我可以清楚地看到文档指出完整列表是必需的,但这对于内存受限的物联网设备来说似乎是不可接受的。例如,AWS 只需要一个证书 - 具体取决于所选的 TLS 密码。请参阅服务器身份验证 (https://docs.aws.amazon.com/iot/latest/developerguide/managing-device-certs.html) 下的 AWS 文档

任何有助于了解减少根证书列表的方法(例如基于 ECC 的验证与基于 RSA 的验证的消除)都将有所帮助。

感谢 Github 上一位乐于助人的 Google 工程师回答了这个问题 澄清如何在谷歌提供的物联网设备-SDK-embedded-c 项目中选择trusted_RootCA_certs,解决方案是使用长期支持 (LTS) 域。

从文档中,可以使用特殊域">mqtt.2030.ltsapis.goog"代替"mqtt.googleapis.com",只需要两个带有小型ECC 256公钥的根CA证书,而不是整个root.pem包(128KB)。

这些根 CA 证书在 2030 年之前是固定的。

所需的根 CA 包括:

  • GTS LTSR 作为主要
  • GS 根 R4 作为备份

请注意长期支持 (LTS) 域文档中嵌入式设备的其他要求和功能。

最新更新