パスフレーズなしでRSAキーを生成することは可能ですか?


84

RailsプロジェクトでApache2とPassengerを使用しています。テスト目的で自己署名SSL証明書を作成したいと思います。

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

上記のコマンドを入力すると、

writing RSA key
Enter PEM pass phrase:

パスフレーズを入力しないと、以下のエラーが表示されます

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

を指定せずにRSAキーを生成することは可能pass phraseですか?/etc/init.d/httpdスクリプトが人間の介入なしにHTTPサーバーを開始する方法がわかりません)。


6
コマンドラインはopenssl、既存のキーを暗号化するように指示します。それはあなたが望むもの以外のもののように聞こえます。
デビッドシュワルツ

Apache httpd 、プライベートキーパスフレーズを非対話的に取得するように設定できます。mod_sslのドキュメント、または多くの場合、提供/パッケージ化された構成ファイルのコメントを参照してください。ただし、これは通常、秘密鍵を暗号化しないでおくよりも安全であり、単純です。
dave_thompson_085

回答:


88

自己署名証明書を生成する場合、次のように1つのコマンドでキーと証明書の両方を実行できます。

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

ああ、@ MadHatter がフラグを省略することについての彼の答えで言ったこと-des3


14
nodesディレクティブが、私がここにいる理由です。(秘密鍵のDES暗号化なし)
ヨルフス

39

-des3server.key.newを暗号化するためのopensslへの命令であるフラグをオフにします(これは、偶然、まったく新しいキーではありません。パスフレーズが変更/削除されているだけで、server.keyとまったく同じです)。 。


21

@Tom Hによる回答openssl reqからのコマンドは、自己署名証明書をinclで作成するのに適していますserver.cert。パスワードなしのRSA秘密鍵server.key

openssl req -nodes -new -x509 -keyout server.key -out server.cert

仕組みは次のとおりです。この場合、@ MadHatter-des3回答のように省略しても、パスフレーズなしで秘密鍵を作成するには不十分です。それはあるで、この目的のために十分なopenssl rsa@MadHatterとによって参照される(「秘密鍵を変換」)コマンドopenssl genrsa(「秘密鍵の作成」)コマンドを使用します。openssl reqここのコマンド用ではありません。さらに必要です-nodes(「DES暗号化はしないでserver.keyください!」)。


17

-nodesパラメーターを使用します。このオプションが指定されている場合、秘密鍵は暗号化されません。例:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7

opensslでもう一度実行するだけです

最初にパスフレーズでキーを生成します

それから openssl rsa -in server.key -out server.key


これはubuntu 16.04では機能していません
-sweetfa

3
この答えは尋ねられたものではなく、コマンドは入力を必要とし、キーを生成しないため、私はダウン票を投じました。
ドン

ユーザーはすでに、キーの生成方法を知っていることを実証しました。この答えはその知識に基づいており、新しく生成されたキーを取得して再度パススルーすることをお勧めしますopenssl
darethas

、私の作品opensslGitBashからのWindows 10上。情報をありがとう。
グリーン

0

次のコマンドを使用して、暗号化なしでパスワードなしの秘密鍵ファイルを生成します。最後のパラメーターは、秘密鍵のサイズです。

openssl genrsa -out my-passless-private.key 4096

1
これはパスワードなしではありません。それは完全に、そして完全にパスワードフルです。
dave_thompson_085

パラメーターの位置を実験していました。今は大丈夫です。最後の2つのパラメーターの場所を変更し、コマンドをテストしました。
nixの

これで、暗号化されていないファイルが作成されます。(のみ)位置引数の後のオプションは無視されます。ファイルを見てください。暗号化されていません。置換4096 -des34096 -sillywombatても、暗号化されずに機能し、同じ形式を生成します(もちろん、異なるキー値)。パスワードなしの暗号化された秘密鍵ファイルを作成する方法はありません。パスワードなしの暗号化されていないファイルの正しいソリューションは6年前に提供されました。
-dave_thompson_085

あなたが正しいです。@ dave_thompson_085。最後のパラメーターはコマンドに影響しません。回答を更新しました。暗号化されたbase64でエンコードされたパスワードは生成されず、パスワードで保護された秘密キーファイルは生成されません。
nix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.