Ev.*_*Ev. 5 encryption certificate openssl
有人给了我一个证书和几个私钥/公钥,然后说,“告诉我哪个私钥与证书匹配。” 我怎么做?
证书采用 PKCS #7 格式并以以下内容开头:
-----BEGIN CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
钥匙看起来都不一样。其中一些实际上是公钥 - 有些我不确定。它们有不同的扩展名并以不同的字符串开头,例如:
-----BEGIN PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
-----BEGIN EC PARAMETERS-----
Run Code Online (Sandbox Code Playgroud)
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?我想我可以使用 openssl 命令行工具。
基于验证私钥匹配证书(最初来自Apache SSL 常见问题)中给出的命令,可以构建一个小的 bash 脚本,该脚本遍历*.key文件夹中的所有文件,并一次将证书的模数部分与每个密钥进行比较.
Myfindkey.sh将证书的文件名作为命令行参数并打印匹配项。
#!/bin/bash
cert=$1
crthash=$(openssl x509 -noout -modulus -in "$cert" | openssl md5)
echo $cert $crthash
for file in *.key; do
[ -e "$file" ] || continue
keyhash=$(openssl rsa -noout -modulus -in "$file" | openssl md5)
if [ "$keyhash" = "$crthash" ]
then
keytest==$(openssl rsa -in "$file" -check -noout)
echo $file $keyhash $keytest
fi
done
Run Code Online (Sandbox Code Playgroud)
我创建了一些密钥对testN.key/testN.crt并测试了我的脚本,这似乎可以完成这项工作:
./findkey.sh test4.crt
test4.crt (stdin)= 8e30eac60ff8d3c5b1c9bee7e79774bb
test4.key (stdin)= 8e30eac60ff8d3c5b1c9bee7e79774bb =RSA key ok
Run Code Online (Sandbox Code Playgroud)
如果有按键之间的一些证书(或证书请求),因为即使不正确地命名为没关系*.key的openssl rsa -modulus将给予unable to load Private Key,而不是模证书错误。另外,行尾告诉密钥是否一致,防止伪造私钥。您只需要安装此脚本和 OpenSSL。
小智 0
您可以使用证书密钥匹配器工具来检查您的私钥是否与证书匹配,如下所示:
https://www.sslshopper.com/certificate-key-matcher.html
此外,如果您想使用 openssl 命令行工具,建议阅读以下内容:
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |