特定の秘密鍵が特定の公開鍵と一致することを確認する簡単な方法はありますか? いくつ*.pub
かの*.key
ファイルがあり、どれがどれと一致するかを確認する必要があります。
繰り返しますが、これらは pub/key ファイル、DSA です。
私は本当にある種のワンライナーを好むだろう...
特定の秘密鍵が特定の公開鍵と一致することを確認する簡単な方法はありますか? いくつ*.pub
かの*.key
ファイルがあり、どれがどれと一致するかを確認する必要があります。
繰り返しますが、これらは pub/key ファイル、DSA です。
私は本当にある種のワンライナーを好むだろう...
私にとってよりうまくいくと思われる方法を見つけました:
ssh-keygen -y -f <private key file>
このコマンドは、指定された秘密鍵の公開鍵を出力するため、出力を各 *.pub ファイルと比較するだけです。
私は常に次のコマンドを使用して係数の MD5 ハッシュを比較します。
Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5
ハッシュが一致する場合、これら 2 つのファイルは一緒になります。
DSA キーの場合は、
openssl dsa -pubin -in dsa.pub -modulus -noout
公開鍵を印刷するには、次に
openssl dsa -in dsa.key -modulus -noout
秘密鍵に対応する公開鍵を表示し、それらを比較します。
X.509証明書内に公開鍵があり、それらがRSA鍵であると仮定すると、公開鍵ごとに、
openssl x509 -in certfile -modulus -noout
秘密鍵ごとに、
openssl rsa -in keyfile -modulus -noout
次に、モジュラスによってキーを一致させます。
diff を使用すると、チェックを簡単に行うことができます。
diff <(ssh-keygen -y -f $private_key_file) $public_key_file
唯一の奇妙な点は、ファイルが同じである場合、diff は何も言わないことです。そのため、パブリックとプライベートが一致しない場合にのみ通知されます。
公開鍵を削除し、秘密鍵から新しい鍵を生成します。それらを別々のディレクトリに保管するか、命名規則を使用してそれらをまっすぐに保ちます。
公開鍵で何かを暗号化し、どの秘密鍵がそれを復号化するかを確認します。
Jeff Atwoodによるこのコード プロジェクトの記事では、.NET 暗号化クラスの単純化されたラッパーを実装しています。これらの鍵が RSA で使用するために作成されたと仮定すると、公開鍵で非対称クラスを使用して暗号化し、秘密鍵で同じことを復号化します。
puttygenを使用して、秘密鍵をロードするだけです。対応する公開鍵のエクスポートなど、さまざまなオプションを提供します。