如何自动化检测code signing certificate(代码签名证书)的过期时间
代码签名证书到期自动化检测方案
证书有效期提取方法
你可以根据自己手里的资源选择对应提取方式,不需要额外采购商业工具:
- 持有本地证书源文件(.pfx/.p12格式)
直接用openssl命令提取到期时间,不需要解密私钥:openssl pkcs12 -in 你的证书文件路径.pfx -nokeys -clcerts -nodes | openssl x509 -noout -enddate
命令会输出notAfter=20250615123456Z格式的UTC到期时间,提取时间字段和当前时间做差值即可得到剩余有效期。 - 检测已签名的二进制文件
不需要持有证书源文件,直接从公开的安装包中提取签名信息即可:- Windows平台exe/msi文件,用PowerShell执行:
Get-AuthenticodeSignature 你的二进制文件路径 | Select-Object -ExpandProperty SignerCertificate | Select-Object NotAfter - macOS平台app/dmg文件,用终端执行:
codesign -dvvv 你的应用包路径 2>&1 | grep "你的证书主体名" | head -1 | xargs -I {} security find-certificate -c "{}" -p | openssl x509 -noout -enddate - Linux平台deb/rpm等安装包,可以用对应包管理的签名查询命令,或者直接提取内嵌的公钥证书用openssl解析。
- Windows平台exe/msi文件,用PowerShell执行:
自动化流程搭建
- 定时触发:用你团队常用的CI/CD工具设置定时任务即可,常规情况下每周执行1次检测就足够,当剩余有效期小于30天时可以把频率调高到每天1次。
- 告警规则:建议设置两级告警阈值,剩余有效期小于30天触发普通提醒,小于7天触发紧急提醒,提醒可以直接对接你们常用的办公协作工具、邮件组,不需要人工定期查询。
- 检测逻辑可以写成几十行的简单Shell/Python脚本,执行后判断剩余有效期是否命中阈值,命中就自动推送通知,全程不需要人工干预。
注意事项
- 不要把证书私钥上传到定时任务的运行环境,检测只需要用到公钥信息,直接检测公开的已签名二进制文件就可以,避免私钥泄露风险。
- 如果选择检测已签名二进制文件,每次发布新版本后记得更新检测用的文件路径,避免用旧版本的签名信息做判断。
内容的提问来源于stack exchange,提问作者Anuj Mittal
相关产品推荐
相关产品推荐

