Skip to content

证书操作

日常证书查看、解析、下载、比较、校验的基础能力。

命令一览

命令作用在线/离线
info <target>证书与连接信息(含批量)在线域名 / 离线文件
parse <file>解析本地证书 PEM/DER离线
download <domain>下载证书链为 PEM在线
fingerprint <target>SHA-1/SHA-256/公钥指纹在线 / 离线
compare --t1 a --t2 b比较两份证书域名/文件/混合
validate -c cert.pem -k key.pem校验证书与私钥配对离线
validate-fingerprint -f <hash> --hash-type sha256校验指纹格式离线

查看证书信息

bash
# 在线:连域名拿证书 + 连接状态
cert-skills info google.com

# 离线:直接读本地文件
cert-skills info ./server.pem

# 批量
cert-skills info google.com github.com cloudflare.com

输出含:Subject/Issuer、有效期、SAN、密钥算法与长度、签名算法、TLS 版本、密码套件、握手耗时、指纹(SHA-256/SHA-1/MD5/公钥 SHA-256)。

在线 vs 离线 info 的差异

在线模式多出协议层信息(TLS 版本、密码套件、握手耗时),离线模式只有证书本身字段。需要协议层数据时必须用在线域名模式。

解析与下载

bash
# 解析本地 PEM 或 DER
cert-skills parse ./server.pem

# 下载远端证书链(叶子 + 中间),分别存 PEM
cert-skills download google.com -d ./certs/

指纹生成

四种指纹各有用途——选错指纹会误判:

bash
cert-skills fingerprint google.com
cert-skills fingerprint ./server.pem

SHA-1/MD5 不应用于安全判定

SHA-1/MD5 仅用于遗留兼容与取证比对。新场景一律用 SHA-256——旧哈希已被攻破,存在碰撞攻击。

比较两份证书

bash
# 域名 vs 域名
cert-skills compare --t1 google.com --t2 google.com

# 文件 vs 文件
cert-skills compare --t1 ./a.pem --t2 ./b.pem

# 混合
cert-skills compare --t1 google.com --t2 ./backup.pem

比较项:指纹、Subject、Issuer、有效期、密钥算法。常用于"证书续期后是否换了 CA / 换了公钥"的快速核对。

compare 能回答的三个问题
  • 是不是同一张证? → 指纹相同即同一张
  • 续期还是换 CA? → 看 Issuer 是否变了
  • 公钥换没换? → 看密钥算法字段(实际比对 SPKI 更准,可用 fingerprint 取 SPKI)

校验证书与私钥配对

部署证书时常见错误:证书和私钥不匹配(贴错了文件)。validate 直接验证:

bash
cert-skills validate -c server.pem -k server-key.pem

原理:用私钥的公钥与证书里的公钥比对(RSA/ECDSA/Ed25519 均支持)。匹配则 PEM 格式也必然正确。

指纹格式校验

拿到一串指纹串,先验格式再入库:

bash
cert-skills validate-fingerprint -f "ab:cd:ef..." --hash-type sha256
cert-skills validate-fingerprint -f "abcdef..." --hash-type md5

校验:hex 字符合法 + 长度匹配哈希输出(MD5=32、SHA-1=40、SHA-256=64 hex,冒号可选)。

下一步