证书操作
日常证书查看、解析、下载、比较、校验的基础能力。
命令一览
| 命令 | 作用 | 在线/离线 |
|---|---|---|
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.pemSHA-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,冒号可选)。
下一步
- 指纹怎么算、怎么用 → 指纹库匹配
- 离线分析的全貌 → 离线 vs 在线分析