OpenSSL 証明書が特定の秘密鍵によって作成されたかどうかを確認するにはどうすればよいでしょうか?

OpenSSL 証明書が特定の秘密鍵によって作成されたかどうかを確認するにはどうすればよいでしょうか?

私は OpenSSL 証明書を持っています。秘密鍵も必要です。秘密鍵はサーバーのどこかにあると言われましたが、確かに複数の SSL キー ファイルを見つけました。

すべてをブルートフォースで試す前に、証明書の作成に秘密鍵が使用されたかどうかを端末で確認する方法はありますか?

答え1

これに関する古典的な参考文献はこのFAQオンライン Apache ドキュメントで。

その文書では、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

係数の視覚的な比較を避けるために、プロセス置換の使用を提案します。

$ diff \ 
    <(openssl x509 -noout -modulus -in cert.pem) \
    <(openssl rsa -noout -modulus -in key.pem.decrypted)

出力が空の場合、秘密鍵は証明書と一致します。

これは、Andrew Schulman の回答にある方法よりも文字列を比較するより便利な方法であり、もちろんそれも有効です。

もう一つの参考文献ここ

答え2

証明書ファイルが特定の秘密鍵ファイルに関連付けられた公開鍵を証明しているかどうかを確認するには、それぞれに関連付けられた公開鍵を比較します。

openssl rsa -in KEYFILE -pubout
openssl x509 -in CERTFILE -pubkey -noout

公開鍵が同一の場合のみ、証明書と秘密鍵が一致します。

関連情報