0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル環境のサーバー証明書(マルチドメイン含む)作成方法

Posted at

今回は、ローカル環境のサーバー証明書作成方法についてまとめてみました。
あくまでローカル環境(PC上)で構築したWebサーバーに適用するサーバー証明書を、同一端末あるいは同一ネットワーク上にある別端末にインストールする方法となります。

1. サーバー証明書について

1-1. 🔐 サーバー証明書(SSL証明書)ってなに?

インターネットで安全に通信するための「身分証明書」みたいなものです。

1-2. 🌐 どうして必要なの?

たとえば、あなたがウェブサイトにパスワードやクレジットカード番号を入力するとき、それが他の人に盗まれたら困りますよね?

SSL証明書があると、

  • 入力した情報が暗号化される ✅
  • サイトの「本物の証明」がされる ✅

これにより、安全に通信できるのです!

1-3. 🔎 どう見分けるの?

ブラウザのアドレスバーに注目!

  • 🔒 鍵マークが出ている → SSL証明書あり、安全!
  • URLが「https://〜」 → 暗号化通信中!

例:

https://example.com ← 安全なサイト
http://example.com ← 安全でない可能性あり

1-4. 🛠️ 簡単な仕組み

  1. あなた(ユーザー)がWebサイトにアクセス
  2. サイトが「この証明書で本物のサイトですよ!」と提示
  3. あなたのブラウザがそれを確認
  4. 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)

PowerShellDnsNameで以下のように複数指定することで、サーバー証明書に複数のドメインを含めることができます。
```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.createnavigator.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)を選択する
      • 以下のものに全てチェックを入れる
        • 証明のパスにある証明書を可能であれば全て含む
        • すべての拡張プロパティをエクスポートする
        • 証明書のプライバシーを有効にする
  • セキュリティ
    • 任意のパスワードを入力し、暗号化はAES256-SHA256を選択する
  • エクスポートするファイル
    • 任意の場所、任意のファイル名を指定する

(4) 証明書の管理を開く
(5) インポートをクリックする

(6) 証明書のインポートウィザードで以下の通り進める

  • (3)でエクスポートしたファイルを指定する(ファイルの種類を全てのファイルまたはPersonal Information Exchangeに変更するとファイルが表示されます)
  • 秘密キーの保護
    • (3)で指定したパスワードを入力する
    • 以下のものにチェックを入れる
      • すべての拡張プロパティを含める
  • 証明書ストア
    • 証明書を全て次のストアに配置するにチェックを入れて、参照から信頼されたルート証明機関を選択する
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?