SSL証明書リクエストの非インタラクティブな作成


15

初期コマンドで必要なすべてのパラメーターを指定することにより、SSL証明書要求を作成する方法はありますか?CLIベースのWebサーバーコントロールパネルを作成していますが、可能であれば実行時にexpectの使用を避けたいと思いますopenssl

これは、証明書要求を作成する一般的な方法です。

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr
Generating a 2048 bit RSA private key
.................................................+++
........................................+++
writing new private key to 'foobar.com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New Sweden
Locality Name (eg, city) []:Stockholm
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Scandanavian Ventures, Inc.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:foobar.com
Email Address []:gustav@foobar.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:FooBar

私は次のようなものを見たいと思っています:(動作し ない例)

$ openssl req -new -newkey rsa:2048 -nodes -sha256 -keyout foobar.com.key -out foobar.com.csr \
-Country US \
-State "New Sweden" \
-Locality Stockholm \
-Organization "Scandanavian Ventures, Inc." \
-CommonName  foobar.com \
-EmailAddress gustav@foobar.com \
-Company FooBar

すばらしいmanページには、この件に関して何も言うことはなく、Googleで何かを見つけることもできませんでした。SSL証明書要求の生成は対話型プロセスである必要がありますか、または単一のコマンドですべてのパラメーターを指定する方法がありますか?

これは、Debianから派生したLinuxディストリビューションで実行されていopenssl 1.0.1ます。



@ceejayoz:とても素敵です、ありがとう。א)これらのopensslフラグはどこに文書化されていますか?ב)それを見つけるために何をGoogleで探しましたか?ありがとうございました!
dotancohen

1
「CSR生成スクリプト」を検索しました。-subjパラメータがで(あまり詳しく)文書化されているopenssl.org/docs/apps/req.html
ceejayoz 14

通常はと呼ばれる設定ファイルを作成することもできますopenssl.cnf
sebix 14

回答:


16

次の2つの部分が欠落しています。

次のように呼び出すことができる件名行

-subj "/C=US/ST=New Sweden/L=Stockholm /O=.../OU=.../CN=.../emailAddress=..."
  • 、値が...交換X=さX509コード(O rganisation / O rganisation U NIT /など)

次のように呼び出すことができるパスワード値

-passout pass:client11
-passin  pass:client11
  • 出力/入力パスワードを与える

新しいキーの呼び出しは次のようになります

openssl genrsa -aes256 -out lib/client1.key -passout pass:client11 1024
openssl rsa -in lib/client1.key -passin pass:client11 -out lib/client1-nokey.key

openssl req -new -key lib/client1.key -subj req -new \
    -passin pass:client11 -out lib/client1.csr \
    -subj "/C=US/ST=New Sweden/L=Stockholm/O=.../OU=.../CN=.../emailAddress=..."

(今、私はそれを見ると、2つあり-newます...)


2

公式ドキュメントに-batch記載されているオプションを確認してください。


2
ありがとうございました。バッチオプションが存在することがわかりますが、それを使用する方法の説明はないようです。
dotancohen

なぜこの答えはダウン票されたのですか?バッチは問題の可能な解決策ではありませんか?名前から、それはちょうどそうであるように聞こえます。
dotancohen

これは間違いなく-batchオプションを使用してこれを行う唯一の方法です。「-batch」オプションがあるため、「問題に関して素晴らしいmanページには何も言うことはありません」という記述は誤りです。
取り出す

バッチに言及することに賛成しました。ソリューションで使用しなかったとしても、将来便利になるかもしれません。
dotancohen

-1

通常のopensslコマンドに追加します。

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/key.pem -out /etc/ssl/private/cert.pem

この行:

-subj "/C=PE/ST=Lima/L=Lima/O=Acme Inc. /OU=IT Department/CN=acme.com"

説明:

  • 国名(2文字のコード)[AU]:PE
  • 州または県の名前(フルネーム)[一部の州]:リマ
  • 地域名(例:都市)[]:リマ
  • 組織名(会社など)[Internet Widgits Pty Ltd]:Acme Inc.
  • 組織単位名(セクションなど)[]:IT Department
  • 共通名(サーバーのFQDNまたは自分の名前など)[]:acme.com

区切り文字のような「/」を使用します。


1
受け入れられた答えにはすでにこの情報が含まれているようです。それ以外の場合は、ありがとうございます。
dotancohen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.