您可以使用
OpenSSL 实用程序
及其命令行验证 SSL 证书和私钥对的完整性。
该过程包括四个步骤:
- 验证私钥是否被篡改。
- 验证与私人密钥和 SSL 证书对匹配的模值
- 成功使用证书中的公开密钥进行加密,并使用私钥进行解密
- 确认使用私钥签名的文件的完整性
验证私钥的完整性
运行以下命令 openssl rsa -in[key-file .key] -check -noout
下面是一个私钥损坏的例子:
因更改/伪造钥匙导致的其他错误如下:
- RSA 密钥错误:P 不是质数
- RSA 密钥错误:n 不等于 p q
- RSA 密钥错误:d e 与 1 不全等
- RSA 密钥错误:dmp1 与 d 不全等
- RSA 密钥错误:iqmp 不是 q 的倒数
如果遇到上述错误,说明你的私钥被篡改,可能无法与公钥一起使用。 考虑创建新的私钥并申请更换证书。
下面是一个符合完整性要求的私人密钥示例:
验证与私人密钥和 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
确保终端输出与下面的示例完全一致:
如果您的私人密钥被篡改,您将收到以下信息:
在这种情况下,你应该创建一个新的私钥并申请更换证书。