今回は「OpenSSL で Windows に プライベート認証局(CA) を構築する方法」についてまとめます。
すでに OpenSSL が Windows へインストール、設定されていることを前提に認証局として必要な秘密鍵と公開鍵を作成する方法をまとめています。 まだ OpenSSL を導入していない場合、こちら の手順に従って先にインストールをお願い致します。
関連記事
- 公開鍵基盤 (PKI) 構築 に関する まとめ
- OpenSSL を Windows にインストールする方法
- OpenSSL で Windows に プライベート認証局 を 構築する方法 ← この記事
- OpenSSL で 証明書要求を作成、署名する方法
概要
WindowsにOpenSSLが導入済みの前提で、認証局に必要な秘密鍵、公開鍵の作成および証明書の作成を行います。 本記事の対象範囲は以下のイメージです。
関連記事
認証局の秘密鍵作成
公開鍵認証でよく見る「DSA」「RSA」「EC」の3種類について、秘密鍵の生成方法をまとめました。
- DSAアルゴリズムの場合
- RSAアルゴリズムの場合
- EC(楕円曲線)アルゴリズムの場合
DSAアルゴリズムの場合
openssl dsaparam -genkey -noout -out "./private/ca_key.pem" 1024
オプション | 説明 |
---|---|
-genkey | 指定されたパラメータを利用して秘密鍵を生成することを指定。 |
-noout | 秘密鍵生成で使うパラメータの出力を抑止することを指定。 |
-out filename | 出力する秘密鍵のファイル名。 |
(数字) | 出力する秘密鍵のビット数。 |
参考
RSAアルゴリズムの場合
openssl genrsa -out "./private/ca_key.pem" 2048
オプション | 説明 |
---|---|
-out filename | 出力する秘密鍵のファイル名。 |
(数字) | 出力する秘密鍵のビット数。 |
参考
EC(楕円曲線)アルゴリズムの場合
openssl ecparam -genkey -noout -name secp521r1 -param_enc explicit -out "./private/ca_key.pem"
オプション | 説明 |
---|---|
-genkey | 指定されたパラメータを利用して秘密鍵を生成することを指定。 |
-noout | 秘密鍵生成で使うパラメータの出力を抑止することを指定。 |
-name param | 秘密鍵生成に利用するECパラメータを指定します。
利用可能なECパラメータの一覧は以下のコマンドで確認できます。
openssl ecparam -list_curves |
-param_enc args | explicit を指定することで鍵ファイルにすべての楕円曲線パラメータを埋め込みます。 これにより、楕円曲線名を認識できない環境でも楕円曲線が利用できるようになります。 |
-out filename | 出力する秘密鍵のファイル名。 |
参考
認証局の証明書作成
上記のいずれかの方法で秘密鍵(ca_key.pem)が準備された状態で、それに応じた証明書(ca_cert.pem、ca_cert.cer)を作っていきます。
証明書(.pem)作成
openssl req -x509 -key "./private/ca_key.pem" -out "ca_cert.pem" -days 3650
オプション | 説明 |
---|---|
-x509 | 自己署名証明書生成することを指定。 |
-key filename | 公開鍵(証明書)生成に利用する秘密鍵。 |
-out filename | 出力する秘密鍵のファイル名。 |
-days args | 証明書の有効期間(日数)を指定。デフォルトは30日。 |
-out filename | 出力する秘密鍵のファイル名。 |
上記コマンドを実行するとウィザードでサブジェクトの入力が促されます。
Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo-to Locality Name (eg, city) []:Minato-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some Test Company Organizational Unit Name (eg, section) []:Web Service Dept. Common Name (e.g. server FQDN or YOUR name) []:127.0.0.1:3000 Email Address []:(入力せずEnter)
サブジェクト | 略称 | 説明 |
---|---|---|
Country Name | C | 国コードを入力。日本の場合は JP 。
その他の国コードは digicert - SSL Certificate Country Codes を参照。 |
State or Province Name | S | 都道府県名を入力。 |
Locality Name | L | 市区町村名を入力。 |
Organization Name | O | 会社名を入力。 |
Organizational Unit Name | OU | 部署名を入力。 |
Common Name | CN | サーバー名を入力。 クライアント側から見えるサーバー名を指定しないとエラーになるので注意。 |
Email Address | E | メールアドレスを指定。 |
参考
証明書(.cer)作成
Windowsにおける証明書は拡張子が .cer
のファイルです。
実はこのファイルの中身、 PEM または DER になっています。
つまり、前述した手順で作成されたPEM形式の公開鍵 (ca_cert.pem) の拡張子 .pem
を .cer
に変更するとWindows向け証明書が作れます。
-
公開鍵 (ca_cert.pem) をコピー
- コピー元
- ca_cert.pem
- コピー先
- ca_cert - コピー.pem
-
コピーした公開鍵 (ca_cert - コピー.pem) の拡張子を変更
- 変更前
- ca_cert - コピー.pem
- 変更後
- ca_cert.cer
証明書のインストール
前述の方法でWindows向け証明書(ca_cert.cer)が作成で来たら、何かしらの方法でクライアントへ転送し、ウィザードなどを使ってインストールしていきます。 具体的な手順は以下の別記事にまとめていますのでご参照ください。
今回は「OpenSSL を 使って Windows環境で 認証局構築 に 必要な 秘密鍵 と 証明書 の作成する方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!