首页/安全/加密与证书速查/openssl x509 查看与转换证书

openssl x509 查看与转换证书

x509 是证书处理的多面手:查看字段与扩展、转换 PEM/DER、直接生成自签证书、按 CA 签发(-req);-ext 参数可单独读取某个扩展。

加密与证书速查安全更新于 2026-10-13

openssl x509 能做什么

x509 命令是证书处理的多面手:查看字段与扩展、在 PEM 与 DER 之间转换格式、直接生成自签证书,也可以按 CA 私钥签发证书。日常运维里最常用的还是「看」——查主体、签发者、有效期、指纹与扩展,用来核对部署结果与排查兼容性问题。

基本信息

查看字段-noout 配合 -subject、-issuer、-dates、-serial、-fingerprint
读取扩展-ext subjectAltName 或 -ext extendedKeyUsage 单独读取某项扩展
格式转换-inform DER -outform PEM 互转
参与签发x509 -req -CA ca.crt -CAkey ca.key -CAcreateserial
到期检查-checkend 秒数 用退出码判断是否将在指定时间内到期
常见搭配管道接收 s_client 输出的线上证书

典型使用场景

  • 上线核对:确认服务端使用证书的主体、SAN 与有效期
  • 格式转换:把 DER 证书转为 PEM 或反向转换以适配工具
  • 到期巡检:配合 -checkend 写进监控或定时任务
  • 指纹比对:用 SHA-256 指纹确认两侧使用同一张证书
  • 自签证书:测试环境快速生成可用证书

常用查看组合

常用查看组合
# 一次查看主体、签发者、有效期与指纹
openssl x509 -in cert.pem -noout -subject -issuer -dates -fingerprint -sha256
# 单独读取扩展:域名列表与用途
openssl x509 -in cert.pem -noout -ext subjectAltName -ext extendedKeyUsage
# 格式转换:PEM 转 DER
openssl x509 -in cert.pem -outform DER -out cert.der
# 到期检查:30 天内到期则退出码非 0
openssl x509 -in cert.pem -noout -checkend 2592000 || echo 即将到期
# 查看线上服务实际使用的证书
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates

常用参数一览

参数作用提示
-noout不输出证书本体只与其它输出选项配合使用
-text输出全部字段与扩展排错首选,输出较长
-dates输出生效与到期时间配合 -checkend 做巡检
-fingerprint -sha256输出 SHA-256 指纹比对时必须显式指定算法
-ext单独读取某扩展如 subjectAltName、keyUsage
-checkend N判断是否将在 N 秒内到期退出码可用于脚本判断
把 -dates 与 -checkend 组合进定时任务即可做到期巡检,不需要额外组件:-checkend 返回非 0 表示将在指定时间内到期,脚本据此触发告警,覆盖本地文件与从 s_client 抓取的线上证书。
比对指纹时要显式指定 -sha256:不同版本的默认摘要算法可能不同,默认值与对方给出的算法不一致会让比对结果看起来「不匹配」,从而误导判断。

易错点

  • 比对指纹未指定算法:默认摘要不同导致误判为不匹配,应统一使用 -sha256
  • -noout 与输出选项搭配错误:只得到证书本体,看不到想查的字段
  • 只检查本地文件而忽略线上证书:负载均衡与 CDN 上的证书可能完全不同
  • 把 -checkend 的退出码当成证书有效性结论:它只回答时间问题,不校验链与域名
  • 用 x509 生成自签证书后直接上生产:自签证书不被客户端信任,只适合测试环境

数据来源与参考

  • OpenSSL 官方文档(x509)
  • RFC 5280
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌