我正在开发内存受限的IoT设备,并希望通过MQTT将其连接到Google IoT Core。必须受信任才能允许服务器TLS证书验证的必需根证书列表很长。我正在寻找适合资源有限的IoT设备的较小列表,但不会突然停止工作。有没有办法安全地减少所需证书的列表?
在“设备安全建议”部分下的在线文档(https://cloud.google.com/iot/docs/concepts/device-security)中指出:
'与mqtt.googleapis.com:8883(或:443)通信时,请使用TLS 1.2,并使用根证书颁发机构验证服务器证书是否有效。阅读此安全说明,以获取详细的TLS要求和将来的兼容性。'
在安全说明(https://security.googleblog.com/2015/09/disabling-sslv3-and-rc4.html)中指出:
“至少必须信任https://pki.google.com/roots.pem中的证书。”
我可以清楚地看到文档说明了完整列表是必需的,但这对于内存受限的IoT设备似乎不可接受。例如,AWS仅需要一个证书-取决于所选的TLS密码。请参阅服务器身份验证(https://docs.aws.amazon.com/iot/latest/developerguide/managing-device-certs.html)下的AWS文档
对于了解如何减少根证书列表的任何帮助(例如基于基于ECC的验证与基于RSA的验证的消除)都是有帮助的。
答案 0 :(得分:1)
感谢Github上一位乐于助人的Google工程师在Google提供的iot-device-sdk-embedded-c项目中回答了问题Clarify how trusted_RootCA_certs were chosen,该解决方案是使用long-term support (LTS) domain。
从文档中,可以使用特殊域“ mqtt.2030.ltsapis.goog ”代替“ mqtt.googleapis.com”,从而仅需要两个带有小号根CA证书ECC 256个公共密钥,而不是整个root.pem软件包(128KB)。
这些根CA证书在2030年之前都是固定的。
所需的根CA是:
在long-term support (LTS) domain文档中注意嵌入式设备的其他要求和功能。