web-dev-qa-db-ja.com

OpenSSLによって生成された秘密鍵ファイルを使用して暗号化する方法は?

openssl genrsa -out yourdomain.key 2048コマンドを使用してキーを生成すると、 yourdomain.keyファイルに秘密鍵と公開鍵の両方が含まれていることを理解しています。ただし、このキーファイルの内容を確認すると、-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----で始まり、このファイルで終わるため、このファイルは秘密キーであると感じられます。何故ですか?これは私をとても混乱させます。

秘密キーを使用してメッセージを暗号化する場合、yourdomain.keyキー全体を適用しますか?それとも秘密鍵部分を抽出して使用する必要がありますか?

8
Zhen

OpenSSLコマンドラインを使用して、何かを暗号化または署名しないでください。 OpenSSLコマンドラインはデバッグツールです。メッセージを暗号化または署名するには、この目的のために設計された [〜#〜] gpg [〜#〜] などのツールを使用します。

秘密鍵ファイルには、公開鍵の作成に必要なすべての情報が含まれています。 OpenSSLが理解できる形式の秘密鍵があり、対応する公開鍵を取得したい場合は、openssl pkey -pubout …を使用できます。しかし、それはGPGが必要とするフォーマットではありません。 GPGは独自のキーを生成します。

秘密鍵は、復号化と署名に使用されます。暗号化には使用しません。そのために公開鍵を使用します。ただし、openssl genrsaは公開鍵を生成せず、秘密鍵のみを生成します。暗号化するには、まず公開鍵を生成する必要があります(つまり、keypair:private and publicです):

openssl rsa -in yourdomain.key -outform PEM -pubout -out public.pem

これにより、公開鍵を含むpublic.pemファイルが作成されます。それを使用してファイルを暗号化します。

openssl rsautl -encrypt -inkey public.pem  -pubin -in file.txt -out file.enc

後で復号化するには、秘密鍵を使用します。

openssl rsautl -decrypt -inkey yourdomain.key -in file.enc  -out file.dec
11
ThoriumBR