You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32设备基于FreeRTOS与AWS OTA的代码签名证书更新方案咨询

解决方案:AWS IoT + FreeRTOS OTA 证书轮换与信任链配置

1. 替换硬编码单证书为信任链

不要在设备中烧录单个代码签名证书,改为烧录AWS私有根CA(或中间CA)证书。只要后续的代码签名证书由该根/中间CA签发,设备就能自动完成验证,无需重新烧录设备。

  • 操作步骤:
    • 通过AWS Certificate Manager (ACM) 创建私有根CA,或导入现有私有CA。
    • 从根CA签发代码签名专用的中间CA(推荐分层架构,后续轮换中间CA时无需改动根CA)。
    • 设备端硬编码根CA证书(可设置长达20年的有效期),而非单个签名证书。

2. 配置代码签名证书的必要扩展

代码签名证书必须包含特定X.509扩展,才能被AWS IoT OTA识别:

  • 需添加codeSigning扩展(OID: 1.3.6.1.4.1.37585.2.1.1),值设为TRUE。

  • 确保Key Usage包含Digital Signature,Extended Key Usage包含Code Signing(OID: 1.3.6.1.5.5.7.3.3)。

  • 用ACM CLI签发证书时添加扩展的示例:

aws acm-pca issue-certificate \
  --certificate-authority-arn arn:aws:acm-pca:region:account:certificate-authority/ca-id \
  --csr file://code-signing-csr.pem \
  --signing-algorithm "SHA256WITHRSA" \
  --validity Value=365,Type=DAYS \
  --extensions file://extensions.json

对应的extensions.json内容:

{
  "KeyUsage": {
    "DigitalSignature": true
  },
  "ExtendedKeyUsage": [
    {
      "OID": "1.3.6.1.5.5.7.3.3"
    }
  ],
  "CustomExtensions": [
    {
      "OID": "1.3.6.1.4.1.37585.2.1.1",
      "Value": "TRUE",
      "Critical": false
    }
  ]
}

3. 配置AWS IoT OTA签名与设备端验证

  • AWS IoT控制台配置:
    进入IoT Core > 管理 > OTA更新 > 签名配置,创建新配置并关联签发的代码签名证书,将验证策略设为「信任CA链」。
  • 设备端FreeRTOS配置:
    修改ota_config.h,启用CONFIG_OTA_VERIFY_CERTIFICATE_CHAIN宏,将硬编码的单个签名证书替换为根CA证书。

4. 证书轮换流程

当代码签名证书过期/吊销时:

  • 从同一根/中间CA签发新的代码签名证书。
  • 更新AWS IoT签名配置为新证书,后续OTA更新用新证书签名即可,设备无需任何改动。

若需轮换中间CA:

  • 用根CA签发新的中间CA,直接用新中间CA签发签名证书,设备会通过根CA自动验证;或通过OTA推送新中间CA证书到设备。

5. 常见问题排查

  • 证书扩展不匹配:用openssl x509 -in cert.pem -text -noout检查是否包含codeSigning扩展和代码签名EKU。
  • AWS IoT不识别证书:确保证书由ACM PCA签发,并已在IoT Core中注册/关联。
  • 设备验证失败:检查设备端根CA证书是否正确,FreeRTOS OTA库是否启用了CA链验证。

内容的提问来源于stack exchange,提问作者mindlis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:27