web-dev-qa-db-ja.com

OpenSSLを使用してCSRとパスワード付きの秘密鍵を生成する

OpenSSLを使用して秘密鍵と一緒にCSRを生成するために、次のコマンドを使用しています。

openssl req -new -subj "/CN=sample.myhost.com" -out newcsr.csr -nodes -sha512 -newkey rsa:2048

2つのファイルが生成されます。

  • newcsr.csr
  • privkey.pem

生成された秘密鍵にはパスワードがありません。生成プロセス中にパスワードを追加するにはどうすればよいですか?

注:私の最終目標はp12ファイルは、CSRに従って提供された証明書と秘密キー(パスワードで保護されています)を組み合わせて作成します。

11
vdenotaris

「-ノード」を除外する

(ぎこちない名前の)_-nodes_(読み:)(DES暗号化を省略します))コマンドからのパラメーター。

OpenSSLの「パスフレーズ引数」を使用する

出力ファイルのパスワードを指定する場合は、(これも厄介な名前の)_-passout_パラメータが必要です。

これは多次元パラメーターであり、いくつかのソースから実際のパスワードを読み取ることができます。ファイルや環境変数などから。または、コマンドラインから直接(安全性が最も低い)。以下は、これらの使用法の例です。

(公式の manpageは "Pass Phrase Options"セクションにさらに多くのパスワードソースをリストしています (アーカイブ here 。))

例:「pass:」を使用したコマンドラインからのパスワード

_$ openssl req -new -passout pass:"Pomegranate" -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
................................................................................................................................+++
......................+++
writing new private key to 'privkey.pem'
-----


$ openssl rsa -in privkey.pem -passin pass:'Pomegranate' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAsSP5kLRPP8wPODrnvuAeeoqGMqTOvRULL423vv6+zjYhwPUi
_

例:「env:」を含む変数からのパスワード

_$ export MYPASS='Elderberry'


$ openssl req -new -passout env:MYPASS -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
............................+++
.....................+++
writing new private key to 'privkey.pem'
-----


$ openssl rsa -in privkey.pem -passin pass:'Elderberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAv0NnBnigPp+O9G4UXc0qSyeELdJJjTmnO9GEtE5GlPGoK7vW
_

例:「file:」を含むファイルからのパスワード

_$ echo "Farkleberry" > password.txt


$ openssl req -new -passout file:password.txt -subj "/CN=sample.myhost.com" -out newcsr.csr -sha512 -newkey rsa:2048
Generating a 2048 bit RSA private key
......................+++
...........+++
writing new private key to 'privkey.pem'
-----


$ openssl rsa -in privkey.pem -passin pass:'Farkleberry' | head -n2
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAsHICgYvqe4i9CIR5eQk38JJmuTaJQvyxPH9S+BahT5XWh88z
_

関連読書

23
StackzOfZtuff

次のコマンドを使用して、パスワードでキーを更新できます。

openssl rsa -des3 -in server.key -out server.key.new

次に、mv server.key.new server.keyを使用して、古いキーを上書きします。

2
BadSkillz