#手順
1.OpenSSL(Windows版)のダウンロード
2.CA証明書の作成
2-1.CA秘密鍵生成
2-2.CSR作成
2-3.証明属性定義ファイルの作成
2-4.CA証明書作成
3.サーバ証明書の作成
3-1.秘密鍵生成
3-2.CSR作成
3-3.証明属性定義ファイルの作成
3-4.サーバ証明書作成
4.CRT形式ファイルをPFX形式に変換する
*今回使ったコマンドラインはPower Shellです。
#1.OpenSSL(Windows版)のダウンロード
今回利用したWindows用にコンパイル済みのインストーラーを配布しているサイト
http://slproweb.com/products/Win32OpenSSL.html
環境に合わせてダウンロードしてください。
*今回は下記のファイルをダウンロードしました。
ダウンロードしたファイルを実行
ウィザードが起動したら、【Next>】をクリック
使用許諾を確認後、問題なければ【Next>】をクリック
インストール先フォルダを設定したら、【Next>】をクリック
*今回は初期状態のままにしました。
スタートメニューのフォルダを設定したら、【Next>】をクリック
*これも初期状態のままにしました。
DLLのコピー先を指定する
*今回は下側の【The OpenSSL binaries (/bin) directory】にしました
セットアップ内容が良ければ、【Install】をクリック
インストールが完了後、寄付を求められるが見なかったことにしてチェックを全て外し【Finish】をクリック
※環境変数にOpenSSLを追加する手順についてはこちらで書かせていただきます
#2.CA証明書の作成
##2-1.CA秘密鍵生成
証明書を作成したいディレクトリに移動します
openssl genrsa
コマンドで証明書の秘密鍵を生成します
下記のコマンドで、RSA2048bitの鍵が作成されます。
openssl genrsa -out ca.key 2048
##2-2.CSR作成
2-1で作成した秘密鍵を基に、下記のコマンドでCSRを作成する
※@@@@の部分には、設定したい値を入力してください
openssl req -new -key ca.key -out ca.csr -subj "/C=JP/CN=@@@@"
-subj
というオプションを使うと、必要事項の対話式入力なしで指定した情報で作成することができ、便利でした
##2-3.証明書属性定義ファイルの作成
CSRを署名する前に、証明書属性定義ファイルを作成しておく
今回はca.extという名前で用意しました
# CA証明書用
[v3_ca]
basicConstraints = critical, CA:true
keyUsage = keyCertSign, cRLSign
extendedKeyUsage = serverAuth, clientAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
##2-4.CA証明書作成
ルートCAは自己署名である必要があり、自己署名の場合は2-1で作成した秘密鍵で2-2のCSRを署名する形式
-signkey
オプションで署名に使用する秘密鍵を指定する
openssl x509 -req -signkey ca.key -extfile ca.ext -extensions "v3_ca" -in ca.csr -out ca.crt -days 3652 -sha256
#3.サーバ証明書の作成
これまでに作成したCAの秘密鍵と証明書を使って、サーバ証明書を作成します
##3-1.秘密鍵生成
2-1と同じ手順と同様に生成
openssl genrsa -out server.key 2048
##3-2.CSR作成
こちらも2-2と同様にCSRを作成
※@@@@の部分には、設定したい値を入力してください
openssl req -new -key server.key -out server.csr -subj "/CN=@@@@@"
##3-3.証明書属性定義ファイル作成
CA証明書用とサーバ証明書用で一部属性が異なる為、別ファイルを作成します
今回はserver.extという名前で用意しました
DNSとIPはどちらかだけでも大丈夫です
#TLSサーバ証明書用
[v3_server]
basicConstraints = critical, CA:false
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = DNS:@@@@@@@@@@,IP:@@.@@.@.@@@
##3-4.サーバ証明書作成
CAからのチェーン証明書として発行する場合は、-CAkey
オプションでCAの秘密鍵、-CA
オプションでCA証明書を指定します
これにより、CAの鍵でCSRが署名され、チェーン証明書となります
openssl x509 -req -CAkey ca.key -CA ca.crt -CAcreateserial -extfile server.ext -extensions "v3_server" -in server.csr -out server.crt -days 365 -sha256
#4.CRT形式ファイルをPFX形式に変換する
CRT形式ファイルをPFX形式に変換する際、パスワードを設定することになるので用意しておいてください
openssl pkcs12 -export -out Qiita.pfx -inkey server.key -in server.crt
上記のコマンドを実行すると下記の画像の様にパスワードの入力と確認用の再入力が求められので設定してください
そのまま下記のコマンドを実行するとパスワードのテキストファイルを作成できるので便利でした
今回はpassword.txtというファイルで作ります。@@@@@@@@の部分にPFX形式へ変換時に設定したパスワードを入力してください
echo @@@@@@@@@ > Password.txt