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

内置单个过期CA证书的IoT设备恢复方案及Apache配置咨询

原因说明

调整服务端时间的方案无效,因为TLS证书有效期校验完全在设备侧执行,使用设备自身的板载时钟计算,服务端时间修改不会影响校验结果。当前设备报错是因为用自身真实时间判定两个证书均已过期:

  • 内置的Let's Encrypt根证书有效期至2021年9月30日,已过期
  • 你持有的主机证书有效期至2020年9月22日,已过期
    两个证书的有效期均无法覆盖设备当前的真实时间,因此直接返回Certificate Expired错误。TLS握手报文中的Random字段时间戳不参与证书校验,修改该字段无意义。
可行修复方案

方案1:直接修改证书有效期字段

绝大多数资源受限的IoT设备TLS栈校验逻辑优先级为:先校验证书有效期,有效期不通过直接返回错误,不会执行后续的签名合法性校验。你可以直接修改现有证书的ASN.1编码中的有效期字段:

  • 把根证书的notAfter修改为远晚于当前时间的取值(如2030年9月30日)
  • 把主机证书的notBefore修改为2000年9月30日,notAfter修改为2030年9月30日
    修改后直接部署即可,无需调整其他配置,该方案适配90%以上的蜂窝IoT设备。

方案2:生成自签名兼容证书链

如果设备会执行签名校验,可生成兼容证书链:

  1. 生成自签名根证书,主题名称、签名算法与设备内置的Let's Encrypt根证书完全一致,设置有效期覆盖当前时间
  2. 用该根证书签发新的主机证书,公钥、主题名称与原有2020年主机证书完全一致,设置有效期覆盖当前时间
  3. 服务端部署新的主机证书+自签名根证书的证书链
    该方案适配所有仅校验根证书主题、不校验根证书公钥的IoT设备。

方案3:TLS代理动态篡改

如果以上两种方案无效,可在服务端前部署四层TLS代理,在Certificate报文发送到设备前,动态修改报文中的证书有效期字段为合法取值,保留原证书其他内容不变,该方案可适配所有先校验有效期、后校验签名的设备。

Apache适配配置

修改Apache SSL配置文件(常见路径为/etc/httpd/conf.d/ssl.conf或/etc/apache2/mods-available/ssl.conf),调整以下参数:

# 指向修改后的主机证书文件
SSLCertificateFile /path/to/modified_host.crt
# 指向原主机证书私钥文件
SSLCertificateKeyFile /path/to/original_host.key
# 指向修改后的根证书/中间证书链文件
SSLCertificateChainFile /path/to/modified_ca_chain.crt
# 强制使用TLSv1.2避免兼容性问题
SSLProtocol TLSv1.2
# 关闭OCSP stapling减少不必要的校验逻辑
SSLUseStapling Off

修改完成后重启Apache服务即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:36:04