如何验证SSL证书和私钥对的完整性
如何验证SSL证书和私钥对的完整性?本文将从验证私钥的完整性、验证私钥和公钥匹配的模数、使用证书中的公钥成功执行加密并使用私钥解密、确认使用私钥签名的文件的完整性四个方面来分析。
1、使用 OpenSSL确认私钥的完整性
openssl rsa -in [key-file.key] -check -noout
不符合完整性的私钥示例:
可能因篡改/伪造密钥而收到的其他一些错误:
RSA 密钥错误:p 不是素数
RSA 密钥错误:n 不等于 pq
RSA 密钥错误:de 不等于 1
RSA 密钥错误:dmp1 与 d 不一致
RSA 密钥错误:iqmp 不是 q 的倒数
如果您收到上述任何错误,则您的私钥已被操纵,可能无法与您的公钥一起使用。考虑创建一个新的私钥并请求一个替换证书。
满足完整性的私钥示例:
2、确认与私钥和SSL证书密钥对的模值匹配
查看证书模数:
openssl x509 -noout -modulus -in [certificate-file.cer]
查看私钥模数:
openssl rsa -noout -modulus -in [key-file.key]
注意: 私钥和证书的模数必须完全匹配。
3、使用证书中的公钥执行加密并使用私钥执行解密
1)从证书中获取公钥
openssl x509 -in [certificate-file.cer] -noout -pubkey > certificatefile.pub.cer
2)使用公钥加密 test.txt 文件内容
创建一个名为 test.txt 的新文件,其内容为“ message test ”。执行以下命令将加密消息创建到 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
符合完整性的示例: