【証明書基礎】WindowsのIISで自己署名証明書を作成する方法【実践編】
この記事の内容
- Windows Server の IIS(Webサーバー)に自己署名証明書を作成する手順を解説します
- IIS マネージャーの GUI から証明書の作成・管理ができる機能を紹介します
- 作成した証明書を HTTPS(443番ポート)にバインドする方法を説明します
- 自己署名証明書が「信頼されない」理由と、その対処方法(証明書ストアへのインポート)を解説します
- 自己署名証明書の用途上の注意点についても触れます
前提:今回の構成
今回は Web という名前の Windows Server を用意し、そこに IIS を導入して HTTPS 構成を行います。ドメインに参加しているため、FQDN は Web.AD.local となります。
IIS(Webサーバー)の役割インストール
まずはサーバーに IIS の役割をインストールします。
- サーバーマネージャー を開き、「役割と機能の追加」を選択します
- ウィザードを進め、「Webサーバー(IIS)」にチェックを入れます
- 「インストール」をクリックしてインストールを完了させます
インストール完了後、ブラウザで http://localhost や http://Web.AD.local にアクセスすると、IIS のデフォルトページが表示されます。
この時点では HTTPS(443番)は待ち受けていないため、https://localhost へのアクセスは接続できません。また、HTTP(80番)でのアクセスにはセキュリティ警告が表示される状態です。
IIS マネージャーで自己署名証明書を作成する
IIS には、証明書の作成・管理・要求ができる機能が内蔵されています。
証明書作成の手順
- IIS マネージャーを開き、左ペインでサーバー名を選択します
- 中央の機能一覧から 「サーバー証明書」 をダブルクリックします
- 右側の「操作」ペインに以下のメニューが表示されます:
- 証明書の要求の作成 / 証明書要求の完了:外部の認証局(CA)に署名を依頼するパターン
- ドメイン証明書の作成:Active Directory のエンタープライズ CA を利用するパターン
- 自己署名入り証明書の作成:今回使用するメニュー
- 「自己署名入り証明書の作成」をクリックします
- フレンドリ名(任意の識別名)を入力します
- 証明書ストアとして「個人」を選択します
- 「OK」をクリックして証明書を作成します
作成後の確認
証明書が作成されると、「サーバー証明書」の一覧に新しいエントリが追加されます。
MMC(Microsoft 管理コンソール)を使って証明書の詳細を確認することもできます。
MMC を起動後、「ファイル」→「スナップインの追加と削除」→「証明書」を選択し、「コンピューターアカウント」→「ローカルコンピューター」を指定します。
「個人」フォルダに、今回作成した証明書が追加されていることを確認できます。証明書のアイコンには以下の意味があります:
- 左上の鍵マーク:秘密鍵を保持していることを示します
- 右下の署名マーク:署名が付いていることを示します
証明書の詳細を確認すると、以下の情報が含まれています:
| 項目 | 内容 |
|---|---|
| 発行先(Subject) | Web.AD.local |
| 発行者 | Web.AD.local(自己署名のため同一) |
| サブジェクト代替名(SAN) | DNS:Web.AD.local |
| 有効期間 | 1年間 |
信頼されたルート証明機関への登録
IIS で自己署名証明書を作成すると、同一サーバーの「信頼されたルート証明機関」ストアにも自動的に追加されます。これにより、そのサーバー自身からアクセスした場合は証明書が信頼された状態になります。
HTTPS バインドの設定
証明書を作成しただけでは HTTPS は有効になりません。サイトに証明書を紐付ける(バインドする)作業が必要です。
- IIS マネージャーで 「Default Web Site」 を選択します
- 右側の「操作」ペインから 「バインド」 をクリックします
- 現在は HTTP(80番)のみ登録されていることを確認します
- 「追加」をクリックします
- 以下のとおり設定します:
- 種類:
https - IP アドレス:
すべて未割り当て(または特定のIPアドレス) - ポート:
443 - ホスト名:空白(サイトが1つだけの場合は省略可)
- SSL 証明書:先ほど作成した証明書を選択
- 種類:
- 「OK」をクリックして設定を保存します
補足:複数のサイトを同一サーバーでホストする場合は、ホスト名を入力してサイトごとに証明書を割り当てます。
動作確認(同一サーバーから)
HTTPS バインドを設定したら、ブラウザで https://Web.AD.local にアクセスします。
https://Web.AD.local→ 接続成功(証明書が有効)https://localhost→ 警告あり(証明書の SAN にlocalhostが含まれていないため)https://Web→ 警告あり(証明書の SAN にWebという短縮名が含まれていないため)
このように、アクセスする際の URL が証明書の SAN(サブジェクト代替名)に含まれている名前と一致しないと、ブラウザは警告を表示します。
別の端末からアクセスした場合の挙動
同じ https://Web.AD.local に対して、**別のサーバー(ドメインコントローラー等)**からアクセスすると、「接続がプライベートではありません」というエラーが表示されます。
原因
別の端末の「信頼されたルート証明機関」ストアに、今回作成した自己署名証明書が登録されていないためです。
ブラウザは、サーバーから提示された証明書の「発行者(署名者)」が、クライアントの信頼済みルート証明機関に存在するかどうかを確認します。自己署名証明書の場合、その証明書を発行したのは自分自身であり、他の端末はその発行者を信頼していません。
対処方法:証明書のエクスポートとインポート
エクスポート(証明書を取得する側のサーバーで):
- ブラウザの証明書エラー画面から証明書を表示します
- 「エクスポート」または「ダウンロード」を選択して
.cerファイルとして保存します
インポート(信頼させたいクライアント端末で):
- ダウンロードした
.cerファイルをダブルクリックします - 「証明書のインストール」をクリックします
- 保存場所として 「ローカルコンピューター」 を選択します
- 証明書ストアは「証明書ストアを自動的に選択する」ではなく、「証明書をすべて次のストアに配置する」 を選択します
- 参照から 「信頼されたルート証明機関」 を選択します
- 「完了」をクリックしてインポートします
インポートが完了すると、その端末から https://Web.AD.local にアクセスした際に証明書エラーが解消されます。
自己署名証明書の使用上の注意
自己署名証明書は非常に手軽に作成できますが、いくつかの重要な制限があります。
| 用途 | 可否 |
|---|---|
| 開発・テスト環境での動作確認 | ✅ 適切な用途 |
| 本番環境での利用 | ❌ 非推奨 |
| 組織内の他ユーザーへの提供 | ❌ 非推奨 |
テストが完了したら、インポートした自己署名証明書はすみやかに削除することをお勧めします。本番環境や組織内での利用には、外部の認証局(CA)または Active Directory のエンタープライズ CA によって署名された証明書を使用してください。
まとめ
今回は、Windows Server の IIS マネージャーを使って自己署名証明書を作成し、HTTPS 構成を行う手順を解説しました。
- IIS マネージャーの「サーバー証明書」機能から、GUI 操作だけで自己署名証明書を作成できます
- 作成した証明書は「バインド」設定で HTTPS(443番)に紐付けます
- 自己署名証明書は、同一サーバーでは自動的に信頼されますが、他の端末では信頼されません
- 他の端末で信頼させるには、証明書を「信頼されたルート証明機関」ストアにインポートする必要があります
- 自己署名証明書はあくまでテスト・開発用途に限定し、本番環境では正式な証明書を使用することを強くお勧めします