ローカル環境のサーバー証明書(マルチドメイン含む)作成方法
今回は、ローカル環境のサーバー証明書作成方法についてまとめてみました。
あくまでローカル環境(PC上)で構築したWebサーバーに適用するサーバー証明書を、同一端末あるいは同一ネットワーク上にある別端末にインストールする方法となります。
1. サーバー証明書について
1-1. 🔐 サーバー証明書(SSL証明書)ってなに?
インターネットで安全に通信するための「身分証明書」みたいなものです。
1-2. 🌐 どうして必要なの?
たとえば、あなたがウェブサイトにパスワードやクレジットカード番号を入力するとき、それが他の人に盗まれたら困りますよね?
SSL証明書があると、
- 入力した情報が暗号化される ✅
- サイトの「本物の証明」がされる ✅
これにより、安全に通信できるのです!
1-3. 🔎 どう見分けるの?
ブラウザのアドレスバーに注目!
- 🔒 鍵マークが出ている → SSL証明書あり、安全!
- URLが「https://〜」 → 暗号化通信中!
例:
https://example.com ← 安全なサイト
http://example.com ← 安全でない可能性あり
1-4. 🛠️ 簡単な仕組み
- あなた(ユーザー)がWebサイトにアクセス
- サイトが「この証明書で本物のサイトですよ!」と提示
- あなたのブラウザがそれを確認
- OKなら、情報が暗号化されて送られる
1-5. 💡 まとめると…
用語 | わかりやすく言うと |
---|---|
SSL/TLS | 通信を暗号化する技術 |
サーバー証明書 | サイトが本物だと証明するもの |
HTTPS | 暗号化されたWeb通信のしくみ |
2. ローカルホスト(またはPC名を含んだ)のサーバー証明書の作り方
PowerShellでDnsNameでlocalhostのサーバー証明書を[中間証明書]として作成できます。
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(30)
PowerShellでDnsNameで以下のように複数指定することで、サーバー証明書に複数のドメインを含めることができます。
```powershell
New-SelfSignedCertificate -DnsName "localhost","PC名" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(30)
※サブジェクト代替名を確認すると、指定したドメインが記載されています。
※作成したあと、IISのSSL証明書を変更することを忘れずに
3. localhostで保護された通信にする方法
3-1 .localhostでSSL通信を行う場合の注意点
※保護されていない通信の場合、ブラウザ側の処理(navigator.credentials.create
、navigator.credentials.get
)でエラーになります。ブラウザは保護された通信であれば、公的認証局(CA)が発行したルート証明書でなくとも動きます。
しかし、localhostの証明書をプログラムで検証したとき、クライアント端末にあるクライアント証明書(SSL証明書と突合いする証明書)が、信頼されたルート証明機関
に入っていても、公的認証局(CA)が発行したルート証明書(WinodowsUpdateで自動インストールされるもの)ではないため、エラーが発生する場合があります。
CSharpでは、X509ChainStatusFlags.UntrustedRoot
エラーが発生するため、ServicePointManager.ServerCertificateValidationCallback
にTrueを設定して回避します。
※参考文献
SslPolicyErrors
X509ChainStatusFlags
3-2. localhost証明書で保護された通信を行う方法
(1) [インターネットオプション] -> インターネットのプロパティから[コンテンツ]タブ -> [証明書] -> [中間証明書] から、作成したlocalhost証明書をダブルクリックで開きます。
(2) localhostのサーバー証明書をダブルクリックし、詳細
タブからファイルコピー
をクリックする。
(3) 証明書のエクスポートウィザードで以下の通り進める
- 秘密キーのエクスポート
- 「はい、秘密キーをエクスポートします」を選択する
- エクスポート ファイルの形式
- Personal Information Exchange - PCS #12(.PFX)を選択する
- 以下のものに全てチェックを入れる
- 証明のパスにある証明書を可能であれば全て含む
- すべての拡張プロパティをエクスポートする
- 証明書のプライバシーを有効にする
- 以下のものに全てチェックを入れる
- Personal Information Exchange - PCS #12(.PFX)を選択する
- セキュリティ
- 任意のパスワードを入力し、暗号化は
AES256-SHA256
を選択する
- 任意のパスワードを入力し、暗号化は
- エクスポートするファイル
- 任意の場所、任意のファイル名を指定する
(4) 証明書の管理を開く
(5) インポート
をクリックする
(6) 証明書のインポートウィザードで以下の通り進める
- (3)でエクスポートしたファイルを指定する(ファイルの種類を
全てのファイル
またはPersonal Information Exchange
に変更するとファイルが表示されます) - 秘密キーの保護
- (3)で指定したパスワードを入力する
- 以下のものにチェックを入れる
- すべての拡張プロパティを含める
- 証明書ストア
-
証明書を全て次のストアに配置する
にチェックを入れて、参照から信頼されたルート証明機関
を選択する
-
Discussion