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:不同版本的默认摘要算法可能不同,默认值与对方给出的算法不一致会让比对结果看起来「不匹配」,从而误导判断。