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

如何通过编程方式从PEM证书存储中移除DST ROOT X3证书?

移除PEM证书存储中过期DST ROOT X3证书的编程化方案

用OpenSSL结合文本工具实现精准移除

OpenSSL本身没有直接删除指定证书的命令,但可以配合awk、grep这类文本处理工具,利用DST ROOT X3的唯一标识(哈希值或主体名称)来筛选移除。

方案1:基于证书哈希值过滤

DST ROOT X3的主体哈希值是933ad6dd,用awk遍历证书块并跳过目标证书:

awk '
  BEGIN { in_cert=0 }
  /-----BEGIN CERTIFICATE-----/ {
    in_cert=1; cert=""
  }
  in_cert {
    cert = cert $0 "\n"
    if (/-----END CERTIFICATE-----/) {
      in_cert=0
      echo "$cert" | openssl x509 -noout -hash | grep -q "933ad6dd" || print cert
    }
  }
' your_certs.pem > temp.pem && mv temp.pem your_certs.pem

方案2:基于证书主体名称过滤

如果记不住哈希值,直接匹配证书的主体信息:

awk '
  BEGIN { in_cert=0 }
  /-----BEGIN CERTIFICATE-----/ {
    in_cert=1; cert=""
  }
  in_cert {
    cert = cert $0 "\n"
    if (/-----END CERTIFICATE-----/) {
      in_cert=0
      echo "$cert" | openssl x509 -noout -subject | grep -q "DST Root CA X3" || print cert
    }
  }
' your_certs.pem > temp.pem && mv temp.pem your_certs.pem

拆分-过滤-合并的直观方案

如果觉得文本工具逻辑复杂,可以先拆分PEM为单个证书文件,再过滤合并:

  1. 拆分PEM到单个文件:
csplit -z your_certs.pem '/-----BEGIN CERTIFICATE-----/' '{*}'
  1. 过滤并合并非目标证书:
> cleaned_certs.pem
for file in xx*; do
  openssl x509 -in "$file" -noout -subject | grep -q "DST Root CA X3" || cat "$file" >> cleaned_certs.pem
done
mv cleaned_certs.pem your_certs.pem && rm xx*

额外建议

  • 操作前必须备份原始证书文件,防止误操作导致证书链断裂。
  • 把上述命令打包成部署脚本的一部分,每次应用部署完成后自动执行。
  • 如果部署环境支持编程语言(比如Python),可以用cryptography库解析证书,通过代码筛选排除DST ROOT X3,适合需要更复杂逻辑的场景。

内容的提问来源于stack exchange,提问作者Ákos Vandra-Meyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46