我有一个OpenSSL证书。 我也需要私钥。 我被告知它位于服务器上的某个地方,而且足够真实,我发现了多个SSL密钥文件。
在我用蛮力试用它们之前:如果使用私钥来创build证书,有没有办法在terminal上find?
这个经典的参考资料是在线的Apache文档中的这个FAQ 。
在该文件中,使用模数的md5是因为
由于公开指数通常是65537,并且很难直观地检查长模数是否相同,所以可以使用以下方法
这给了:
$ openssl rsa -noout -modulus -in key.pem.decrypted | openssl md5 (stdin)= 9fxxfoobar558d9xx0045a89467d2bxx $ openssl x509 -noout -modulus -in crt.pem | openssl md5 (stdin)= 9fxxfoobar558d9xx0045a89467d2bxx
我build议使用过程替代来避免模量的视觉比较:
$ diff \ <(openssl x509 -noout -modulus -in cert.pem) \ <(openssl rsa -noout -modulus -in key.pem.decrypted)
如果输出为空,则私钥与证书匹配。
这只是一个比Andrew Schulman的答案更方便的比较string,当然这也是有效的。
这里另有参考。
要检查证书文件是否certificate与给定私钥文件关联的公钥,请比较与每个公钥相关的公钥:
openssl rsa -in KEYFILE -pubout openssl x509 -in CERTFILE -pubkey -noout
当且仅当公钥相同时,证书和私钥才匹配。