STM32L475 X-CUBE-GCP 示例应用程序未由受信任的 CA 正确签名

物联网 stm32 谷歌物联网核心
2021-06-19 17:28:18

我正在尝试使 X-CUBE-GCP 示例应用程序 SDK 正常工作。由于重复性错误,我无法连接到 GCP 云 -“受信任的 CA 未正确签署证书”。

在此处输入图片说明

我尝试使用 openssl 命令检查证书有效性并获得正确的响应 -

$ openssl crl2pkcs7 -nocrl -certfile globalsign.pem | openssl pkcs7 -print_certs -noout

subject=OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
issuer=OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign

subject=C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
issuer=C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority

$ openssl x509 -enddate -noout -in globalsign.pem
notAfter=Dec 15 08:00:00 2021 GMT

此外,我非常密切地关注完整的 SDK 文档,并确保遵循发布文档中提到的所有步骤。请帮我解决问题。

1个回答

根据官方文档,示例应用程序需要串联 2 个 CA 证书。但是,只提到了一个文件位置,即“设置 TLS 根 CA 证书:复制粘贴 Middlewares\Third_Party\GCP\samples\STM32Cube\globalsign_usertrust.pem 的内容。设备使用它通过 TLS 对远程主机进行身份验证。”

对于 HTTPS 服务器,用于在启动时检索当前时间和日期(“Usertrust”证书)。这位于文档中的上面提到的位置。

对于 GCP,为了验证云服务器。根据服务器的不同,可能需要根据来自 pki.google.com/roots.pem 的受支持 CA 的 Google Cloud™ 列表更新 globalsign_usertrust.pem。示例程序位于——Middlewares/Third_Party/GCP/res/trusted_RootCA_certs/roots.pem

我发现检查这些证书的信息和到期日期很有帮助。如果需要更改 globalsign_usertrust ,请务必了解证书的详细信息 -

 $ openssl crl2pkcs7 -nocrl -certfile roots.pem | openssl pkcs7 -print_certs -noout
     
    subject=C = US, O = Google Trust Services LLC, CN = GTS LTSR
     
    issuer=C = US, O = Google Trust Services LLC, CN = GTS LTSR
     
    subject=OU = GlobalSign ECC Root CA — R4, O = GlobalSign, CN = GlobalSign
     
    issuer=OU = GlobalSign ECC Root CA — R4, O = GlobalSign, CN = GlobalSign

我一个接一个地复制粘贴证书并且它起作用了。