如何验证私钥对的完整性?

您可以使用
OpenSSL 实用程序
及其命令行验证 SSL 证书和私钥对的完整性。

该过程包括四个步骤:

  1. 验证私钥是否被篡改。
  2. 验证与私人密钥和 SSL 证书对匹配的模值
  3. 成功使用证书中的公开密钥进行加密,并使用私钥进行解密
  4. 确认使用私钥签名的文件的完整性

验证私钥的完整性

运行以下命令 openssl rsa -in[key-file .key] -check -noout

下面是一个私钥损坏的例子:

私钥错误

因更改/伪造钥匙导致的其他错误如下:

  • RSA 密钥错误:P 不是质数
  • RSA 密钥错误:n 不等于 p q
  • RSA 密钥错误:d e 与 1 不全等
  • RSA 密钥错误:dmp1 与 d 不全等
  • RSA 密钥错误:iqmp 不是 q 的倒数

如果遇到上述错误,说明你的私钥被篡改,可能无法与公钥一起使用。 考虑创建新的私钥并申请更换证书。

下面是一个符合完整性要求的私人密钥示例:

rsa 密钥确定

验证与私人密钥和 SSL 证书对匹配的模值


注意

私钥和证书的模数必须完全匹配。

运行命令查看证书模数:

openssl x509 -noout -modulus -in [certificate-file .cer]

运行命令查看私钥模数:

openssl rsa -noout -modulus -in [key-file .key]

用公钥加密,用私钥解密

1. 从证书中 获取 公开密钥:

openssl x509 -in[certificate-file .cer] -noout -pubkey> certificatefile.pub.cer

2.使用公开密钥加密 test.txt 文件内容

创建一个名为 test.txt 文件的新文件(可以使用记事本),内容为 “信息测试”。 执行以下命令为 cipher.txt 文件创建加密信息。

openssl rsautl -encrypt -in test.txt -pubin -inkey certificatefile.pub.cer -out cipher.txt

3.使用私钥解密 cipher.txt
执行以下命令解密 cipher.txt 内容。

openssl rsautl -decrypt -in cipher.txt -inkey [key-file .key]

确保可以在终端上解密 cipher.txt 文件内容。 终端输出的内容必须与 test.txt 文件中的内容一致。

如果内容不匹配,说明私钥被篡改,可能无法与你的公钥一起使用。 考虑创建新的私钥并申请更换证书。 下面是一个解密信息的例子:

消息测试

4.确认使用私钥签署的文件的完整性

运行以下命令,用私钥签署 test.sig 和 test.txt 文件:

openssl dgst -sha256 -sign[key-file .key] -out test.sig test.txt

现在,用从步骤 1 提取的公钥验证签名文件。

openssl dgst -sha256 -verify certificatefile.pub.cer -signature test.sig test.txt

确保终端输出与下面的示例完全一致:

已核实 ok
如果您的私人密钥被篡改,您将收到以下信息:

验证失败
在这种情况下,你应该创建一个新的私钥并申请更换证书。

来源:Digicert 知识库Digicert 知识库

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10