3
4

More than 3 years have passed since last update.

OpenSSLでオレオレ証明書を作成

Last updated at Posted at 2021-02-25

手順

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

環境に合わせてダウンロードしてください。
*今回は下記のファイルをダウンロードしました。
image.png

ダウンロードしたファイルを実行

ウィザードが起動したら、【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.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はどちらかだけでも大丈夫です

server.ext
#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

上記のコマンドを実行すると下記の画像の様にパスワードの入力と確認用の再入力が求められので設定してください
image.png

そのまま下記のコマンドを実行するとパスワードのテキストファイルを作成できるので便利でした
今回はpassword.txtというファイルで作ります。@@@@@@@@の部分にPFX形式へ変換時に設定したパスワードを入力してください

echo @@@@@@@@@ > Password.txt 
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4