一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何在 Apache 中验证 SSL 证书的指纹信息

时间:2026-07-10 09:52:52 编辑:袖梨 来源:一聚教程网

验证SSL证书指纹需比对公钥SHA-256哈希值,用OpenSSL从证书和私钥分别提取公钥并计算指纹,二者一致才证明配对;还可检查有效期、签发者、SAN及Java truststore中证书指纹。

验证 SSL 证书指纹,核心是比对证书公钥的哈希值,而不是证书文件本身或私钥内容。Apache 不提供内置命令直接输出指纹,必须借助 OpenSSL 工具提取并计算——这是判断证书是否真实、未被篡改、且与私钥配对的最可靠方式。

提取证书公钥指纹(SHA-256)

从 PEM 格式证书(如 server.crt)中提取公钥,并计算其 SHA-256 指纹:

  • openssl x509 -in server.crt -noout -pubkey | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256

注意:若证书含完整链(含中间 CA),需先分离出服务器证书(即第一个 BEGIN CERTIFICATE 到对应 END CERTIFICATE 的部分),否则指纹会不一致。

提取私钥对应公钥指纹

从私钥(如 server.key)推导出公钥,并计算相同算法的指纹:

  • 无密码私钥:openssl rsa -in server.key -noout -pubkey | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256
  • 有密码私钥:加 -passin pass:yourpassword,例如
    openssl rsa -in server.key -passin pass:123456 -noout -pubkey | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256

两个命令输出的十六进制哈希值必须完全一致,才说明该私钥与证书真正配对。

快速检查证书有效期与签发信息

指纹验证之外,常需确认证书基础状态:

  • 查看有效期:openssl x509 -in server.crt -noout -dates
  • 查看签发者和主体:openssl x509 -in server.crt -noout -issuer -subject
  • 查看 SAN(域名列表):openssl x509 -in server.crt -noout -ext subjectAltName

这些信息可辅助排查浏览器提示“证书不受信任”或“域名不匹配”等问题。

用 keytool 查看 Java 导入证书的指纹(适用于 Java 客户端场景)

若证书已导入 Java truststore(如 cacerts),可用 keytool 验证其指纹:

  • keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts -alias your_alias
  • 输出中会包含 Certificate fingerprints,含 MD5、SHA-1、SHA-256 等——比对 SHA-256 值是否与 OpenSSL 输出一致即可。

注意:keytool 默认使用 SHA-256,但显示格式为带冒号分隔的大写十六进制,OpenSSL 输出为无分隔小写;比对前建议统一格式或用脚本清洗。

热门栏目