首页/网络/协议速查/openssl verify 校验证书链

openssl verify 校验证书链

离线验证链:指定根(-CAfile)与中间证书(-untrusted)验证叶证书;配合 -purpose sslserver 校验服务器用途。

协议速查网络更新于 2026-10-13

openssl verify 是干什么的

openssl verify 是 OpenSSL 自带的离线证书链校验工具:喂给它受信根证书(-CAfile)、中间证书(-untrusted)和待验证的叶证书,它会按 RFC 5280 的链构建规则逐级验证签名、有效期、基本约束与用途,全程不访问网络。签发后自检、上线前预检、监控脚本判断链是否完整,都靠它。适用 OpenSSL 1.1.1 与 3.x,Linux、macOS、Windows 版本通用。

基本信息

适用版本OpenSSL 1.1.1 / 3.x
权限要求普通用户,只读证书文件
基本语法openssl verify -CAfile root.pem -untrusted chain.pem leaf.pem
核心选项-CAfile 受信根;-untrusted 中间证书;-purpose 用途;-checkend 有效期
是否联网否,纯离线;不自动查 OCSP 与 CRL
3.x 增强-show_chain 打印整条链,-x509_strict 启用严格模式

典型使用场景

  • 签发后自检:确认 CA 下发的叶证书能被自己的根链走通
  • 上线前预检:证书与链文件拼好后先跑一遍,避免用户端报链不完整
  • 监控告警:配合 -checkend 在到期前发现,而不是等业务报错
  • 排障定位:区分缺中间证书、用途不符、域名不匹配这几类报错
  • 换 CA 迁移:批量验证存量证书在新根之下是否仍然有效

验证示例

验证示例
# 最基础的链校验:受信根 + 中间证书 + 叶证书
openssl verify -CAfile root.pem -untrusted intermediate.pem leaf.pem
# 按服务器用途校验:额外检查 EKU 是否包含 serverAuth
openssl verify -purpose sslserver -CAfile root.pem -untrusted intermediate.pem leaf.pem
# 拉取线上证书再喂给 verify,模拟客户端建链
openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null > chain.pem
openssl verify -CAfile root.pem chain.pem
# 有效期检查:30 天内到期则返回非 0,适合放进监控
openssl x509 -in leaf.pem -noout -checkend 2592000

输出逐列读法

输出片段含义正常/异常
文件名: OK链构建成功且签名、用途均通过正常
error 20 at 0 depth找不到本地签发者,通常是缺中间证书异常:把中间证书加进 -untrusted
error 18 at 0 depth自签的根不在受信集合中异常:自签环境需显式提供 -CAfile
error 10 at 0 depth证书已过期异常:立即续期并检查服务是否重载
error 24 at 0 depth有效期起始时间在未来异常:检查签发时间或本机时钟
verify 只校验链本身,不查吊销状态:OCSP/CRL 需要 -crl_check 或 openssl ocsp 单独确认。浏览器在链校验之外还会做域名匹配与 CT 检查,因此 verify 通过不等于浏览器一定接受。
公网证书通常要求把叶证书与中间证书按顺序拼成 fullchain 再配置到 Nginx/IIS/负载均衡;只配叶证书时,部分客户端会因拿不到中间证书而报 unknown_ca。

易错点

  • 把叶证书也写进 -CAfile 会造成「自己证明自己」的假通过:根集合只应放受信根证书
  • 漏掉 -untrusted 中间证书是 unknown_ca 报错最常见的原因,线上抓包时先确认服务端是否下发了中间证书
  • verify 通过就以为浏览器会接受:它不校验吊销、CT 与域名匹配,正式验收还应加 -purpose sslserver 或真实握手验证
  • 监控只判断证书文件存在:证书过期前必须用 -checkend 主动检测,否则到期当天才会发现

数据来源与参考

  • OpenSSL 文档(verify)
  • RFC 5280 §6(证书路径验证)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌