解码与转换
证书与私钥匹配检查
粘贴证书、CSR、私钥中的任意两样,检查它们的公钥是否相同。本地运行,私钥不上传。
浏览器本地运行 私钥在你的浏览器里(WebCrypto)生成和处理,不会离开你的设备,也不会上传到 ssl.sh。
私钥匹配工具告诉你证书、CSR 和私钥是否属于同一对密钥。任选两样或三样都粘贴,点 比较,工具会从每一项里取出公钥比对,直接给出“匹配”或“不匹配”。比较在浏览器里完成,私钥不会上传。
怎么用
- 粘贴证书(
BEGIN CERTIFICATE)、CSR(BEGIN CERTIFICATE REQUEST)和/或私钥(BEGIN PRIVATE KEY、BEGIN RSA PRIVATE KEY或BEGIN EC PRIVATE KEY),也可以选择文件。 - 私钥有密码就填上。
- 点 比较。每一行显示密钥类型和公钥的 SHA-256 哈希,哈希相同就是一对。
什么时候用
- Nginx 启动失败,报
SSL_CTX_use_PrivateKey ... key values mismatch(见 nginx key values mismatch)。 - Apache 日志出现
AH02565: Certificate and private key ... do not match。 - 宝塔面板保存 SSL 时报证书和密钥不匹配,或者阿里云、腾讯云上传证书时提示私钥与证书不匹配。
- 续期后服务器上有好几个
.key,不确定哪个是现在用的。
匹配原理
RSA 密钥比较模数,ECDSA 密钥比较曲线和公钥点,Ed25519 比较 32 字节公钥。私钥的公钥是从私钥数据里推导出来的。显示的哈希是 SubjectPublicKeyInfo 的 SHA-256,和 TLSA 3 1 1 记录用的是同一个值。
不匹配怎么办
最常见的原因是证书是用另一份 CSR 申请的,或者后来重新生成 CSR 时把私钥文件覆盖了。在云平台申请证书时如果选了“系统生成 CSR”,私钥要在平台的下载包里找,而不是用你自己服务器上的。实在找不到原来的私钥,就用 CSR 生成器重新生成私钥和 CSR,请 CA 重新签发(大多数 CA 支持免费重签)。
常见问题
为什么比较公钥,而不是比较域名?
域名在很多证书和私钥上都可能一样,只有公钥能把证书和私钥绑定起来。公钥不同,服务器就完成不了握手。
服务器上有好几个 .key 文件,怎么找到对的那个?
证书粘贴一次,私钥逐个试;或者在服务器上比较哈希:openssl x509 -noout -pubkey -in cert.pem | openssl sha256 和 openssl pkey -pubout -in key.pem | openssl sha256,结果相同的就是一对。
加密的私钥能检查吗?
能。支持加密的 PKCS #8(BEGIN ENCRYPTED PRIVATE KEY)和旧式加密的 RSA 私钥,输入密码即可,密码只在你的浏览器里使用。