自己署名証明書作成手順(Windows 10)
- 目的
TricentisのTosca Serverをインストールする際、Use Tosca Server with an HTTPS bindingで接続するための自己署名証明書が必要であったため、作成方法をまとめてみました。
1. 作業ディレクトリの設定
まずは、証明書、秘密鍵、CSRなどのファイルを整理するための作業ディレクトリを作成します。
- 作業ディレクトリを作成
例えば、C:\ssl_certificates
というディレクトリを作成し、その中に秘密鍵、証明書、CSRなどのファイルを格納します。
mkdir C:\ssl_certificates
mkdir C:\ssl_certificates\keys
mkdir C:\ssl_certificates\certs
mkdir C:\ssl_certificates\csr
mkdir C:\ssl_certificates\ca
mkdir C:\ssl_certificates\logs
2. OpenSSLのインストール
WindowsにOpenSSLをインストールしていない場合は、Shining Light Productions から通常版のインストーラーをダウンロードし、インストールします。
3. 秘密鍵の生成
秘密鍵(machineName.key)を生成します。生成した鍵は C:\ssl_certificates\keys に保存します。
openssl genpkey -algorithm RSA -out C:\ssl_certificates\keys\machineName.key -aes256 -pkeyopt rsa_keygen_bits:2048
- オプションの説明
-aes256: 鍵をAES-256で暗号化します(パスフレーズが求められます)。
-pkeyopt rsa_keygen_bits:2048: 鍵長を2048ビットに設定します。
4. CSR(証明書署名要求)の作成
次に、CSRを作成します。作成する際には、証明書に含める情報(CN、組織名など)を指定します。
openssl req -new -key C:\ssl_certificates\keys\machineName.key -out C:\ssl_certificates\csr\machineName.csr -subj "/CN=machineName.domain.com"
- オプションの説明
-subj: /CN=machineName.domain.comで証明書の件名(Common Name)を指定します。ここでは、machineName.domain.com や machineName.local といった実際に使用するDNS名を指定します。
5. CSRにSAN(Subject Alternative Name)を追加
SAN(Subject Alternative Name)を追加することで、証明書が複数のDNS名でも有効になるように設定します。
- openssl.cnf ファイルを編集
OpenSSLの設定ファイル(openssl.cnf)にSANを追加します。
[ req ]
req_extensions = v3_req # コメントアウトされているのを有効化
[ v3_req ]
subjectAltName = @alt_names # ← SANの設定を有効化
[ alt_names ]
DNS.1 = machineName.domain.com # ← 証明書に記載したいDNS名を指定
DNS.2 = www.machineName.domain.com # 必要に応じて追加
- SANを含むCSRの作成
これで、SANを含むCSRを作成することができます。Common Nameは、machineName.domain.com や machineName.local といった実際に使用するDNS名を指定します。
openssl req -new -key C:\ssl_certificates\keys\machineName.key -out C:\ssl_certificates\csr\machineName.csr -config "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" -extensions v3_req
6. 証明書の自己署名
作成したCSRを使って、自己署名証明書を生成します。証明書の有効期限は1年間(365日)に設定します。
openssl x509 -req -in C:\ssl_certificates\csr\machineName.csr -signkey C:\ssl_certificates\keys\machineName.key -out C:\ssl_certificates\certs\machineName.crt -days 365 -sha256 -extfile "C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf" -extensions v3_req
- オプションの説明
-days 365: 証明書の有効期限を1年に設定します。
-sha256: SHA-256を署名アルゴリズムとして使用します。
7. 証明書と秘密鍵を.pfxファイルに変換
作成した証明書(.crt)と秘密鍵(.key)を組み合わせて、.pfx(PKCS#12)形式のファイルを作成します。
openssl pkcs12 -export -out C:\ssl_certificates\certs\machineName.pfx -inkey C:\ssl_certificates\keys\machineName.key -in C:\ssl_certificates\certs\machineName.crt -certfile C:\ssl_certificates\certs\machineName.crt
-
オプションの説明
-export: PKCS#12形式のファイルをエクスポート
-out machineName.pfx: 出力ファイル名
-inkey machineName.key: 秘密鍵の指定
-in machineName.crt: 証明書の指定
-certfile machineName.crt: 追加の証明書(今回は自己署名証明書なので同じファイルを指定) -
パスフレーズの設定
コマンド実行後、エクスポート用のパスワード入力を求められます。このパスワードは、.pfxファイルをインポートする際に必要になります。
8. .pfxファイルのインポート(Windows)
作成した machineName.pfx をWindowsの証明書ストアにインポートします。
machineName.pfx をダブルクリックし、「証明書のインポート ウィザード」を開く。
「ローカルコンピューター」を選択し、「次へ」。
「パスワードの入力」画面で、先ほど設定したパスワードを入力。
証明書の保存場所を選択(例:「個人」または「信頼されたルート証明機関」)。
「完了」をクリックしてインポート。
9. ローカルホスト名の設定
証明書の「Common Name」や「Subject Alternative Name」が正しく解決されるように、machineName.domain.com をローカルで解決できるように設定します。
- ターゲットPCのIPアドレスを確認
コマンドプロンプトを開き、以下のコマンドを実行してターゲットPCのIPアドレスを確認します:
ipconfig
出力の中から「IPv4 Address」を確認し、そのIPアドレス(例:192.168.1.100)をメモします。
- hosts ファイルを編集
hosts ファイルは以下の場所にあります。
C:\Windows\System32\drivers\etc
hosts ファイルに新しいエントリーを追加。
192.168.1.100 machineName.domain.com
192.168.1.100 はターゲットPCのIPv4アドレスで、machineName.domain.com は使用したいドメイン名です。
- DNSキャッシュのクリア
変更を反映させるために、以下のコマンドをコマンドプロンプトで実行してDNSキャッシュをクリアします。
ipconfig /flushdns
10. 疎通確認
ping コマンドで確認します。hosts ファイルの設定が正しく反映されているか確認するため、以下のコマンドを実行します:
ping machineName.domain.com
名前解決が正しく行われれば、設定が完了です。
まとめ
以上の手順で、Windows 10で自己署名証明書を作成し、.pfx形式でインポートする方法が完了しました。必要に応じて、各手順での詳細設定を変更することができます。