证书与私钥匹配检查

粘贴证书和私钥,马上知道是不是一套。Nginx 报 key values mismatch、IIS 或 Tomcat 导入失败时,先在这里排查。

检查全程在你的浏览器里完成,证书和私钥不会发给 LapseZero 或任何第三方,关掉页面就不留痕迹。

什么时候需要检查证书和私钥

Nginx 报 key values mismatch

nginx -t 或重启时报 SSL_CTX_use_PrivateKey failed … key values mismatch,Apache 报 AH02565 Certificate and private key do not match,说明证书和私钥配置的不是一套。把两个文件粘贴进来,马上知道是私钥拿错了,还是证书链顺序不对。

IIS、Tomcat 导入证书失败

合成 PFX 或 JKS 时报证书和私钥不匹配,IIS 导入后证书显示没有私钥、无法绑定到网站,根源常常是证书和私钥不是同一套。先在这里确认匹配,再用证书格式转换生成 PFX 或 JKS。

续期后手里有好几套文件

续期、重新签发或多个域名的证书放在一起,分不清哪个 .key 配哪个 .crt。逐个粘贴比对,结果里会显示证书域名、到期时间和私钥类型,方便确认拿的是哪一套。

常见问题

在线检查安全吗?私钥会上传吗?
不会。检查全程在你的浏览器里完成:由私钥推出公钥,再和证书里的公钥逐字节比对,证书和私钥都不会发给 LapseZero 或任何第三方,关掉页面就不留痕迹。不放心的话,可以打开浏览器开发者工具的网络面板,点击检查时不会出现任何请求。
证书和私钥是一套,Nginx 为什么还报 key values mismatch?
检查 ssl_certificate 指向的文件里证书的顺序。Nginx 用文件里的第一张证书和私钥比对,完整证书链必须域名证书在前、中间证书在后,把中间证书放在前面时,私钥正确也会报错。把整个 fullchain.pem 粘贴到证书框,工具会提示顺序问题;也可以用证书解析与证书链补全生成顺序正确的文件。
可以检查 CSR 和私钥是否匹配吗?
可以,把 CSR(BEGIN CERTIFICATE REQUEST)粘贴到证书框即可。提交 CSR 给服务商之前先确认一下,可以避免拿到证书后才发现私钥对不上。CSR 和私钥要一起生成、一起保存,可以用CSR 生成器在浏览器里生成。
提示私钥已加密怎么办?
以 BEGIN ENCRYPTED PRIVATE KEY 开头、或者带有 Proc-Type: 4,ENCRYPTED 的私钥设了密码。为了安全,这里不接收私钥密码,请先在本机解密:openssl pkey -in key.pem -out key-plain.pem(会提示输入密码),再把解密后的私钥粘贴进来。部署时也要注意,Nginx 需要配置 ssl_password_file 才能读取加密私钥。
找不到对应的私钥怎么办?
私钥无法从证书或 CSR 反推出来。先到当初生成 CSR 的地方找:服务器上的 .key 文件、宝塔等面板的证书目录,或者服务商控制台(部分服务商代为生成 CSR 时会提供私钥下载)。确实找不到,就用CSR 生成器生成新的 CSR 和私钥,到服务商处重新签发,多数服务商支持免费重签。
对应的 OpenSSL 命令是什么?
分别算出证书和私钥的公钥摘要,两个结果相同就是匹配: openssl x509 -noout -pubkey -in cert.pem | openssl sha256 openssl pkey -pubout -in key.pem | openssl sha256 CSR 用:openssl req -noout -pubkey -in request.csr | openssl sha256 网上常见的比较模数(-modulus)的方法只适用于 RSA,ECDSA 证书请用上面的命令。

不想再为证书和私钥配对排查?交给 LapseZero

LapseZero 续期时自动生成私钥、签发证书,并把证书和私钥成对部署到你的服务器和云产品上,不会再出现拿错私钥的情况。免费版即可开始。

免费开始