【第2回】Azureで社内webシステムを再現｜IISをHTTPS対応にする

## はじめに

本記事は、「Azure で社内システムを再現する」シリーズの第2回です。  
Azure の IaaS を用いて、オンプレミス環境を模した構成を段階的に構築していきます。

構成図と処理フローの詳細は、以下の記事をご参照ください👇  
▶ [【第0回】Azureで社内webシステムを再現｜構成図と動作の流れ](https://qiita.com/saba_infra/items/a5e58ded68973e4551ee)

---
## システム構成（今回の対象範囲）

以下は、最終的に構築を目指す全体構成図です。

![構成図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/22781b87-ff11-4345-a804-97b932edc5b5.png)

この記事では、赤枠で囲っている **AD-VM1** と **WEB-VM1** の構成が対象です。

- **AD-VM1** に企業内の認証局（AD CS）を構築し、Webサーバー用のSSL証明書を発行します。
- **WEB-VM1** では、証明書の要求（CSR）を行い、発行された証明書をIISにバインドします。
- これにより、社内WebアプリをHTTPS経由で安全に配信できるようにします。

---

## AD CSのロールをインストール

まずは、AD-VM1 に証明機関（CA）を構築するため、Active Directory 証明書サービス（AD CS）のロールを追加します。

![ADCSロール追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/fa8b28e0-b9fd-4eae-8257-50450a6bd483.png)

> サーバーマネージャーから「役割と機能の追加」を選択し、「証明機関」にチェックを入れてインストールします。

---

## 証明書テンプレートの作成と公開

証明書テンプレートを複製し、WEB-VM1が証明書を要求できるようにします。

### テンプレートを複製する

証明書テンプレート管理コンソールを開き、「Web サーバー」テンプレートを右クリックして複製します。

![テンプレート複製](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/ff6958d8-1e4a-453a-83dd-77c5f8d1262d.png)

> 「Web サーバーのコピー」というテンプレートを作成し、IISで使用する証明書のベースとします。

---

### セキュリティ設定を変更する

WEB-VM1が証明書を要求できるように、「セキュリティ」タブでアクセス権を設定します。

![テンプレートセキュリティ設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/e016b1f7-d884-4745-9b31-b22cc1b36d0b.png)

> WEB-VM1 に「読み取り」と「登録」の権限を付与します。  
> 特に「登録」がないと、証明書の要求が拒否されるので注意が必要です。

---

## WEBサーバー側でCSR発行（証明書要求）

### certlm.msc から証明書要求を開始

WEB-VM1で `certlm.msc` を起動し、「すべてのタスク」→「新しい証明書の要求」を選択します。

![CSR要求スタート](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/ed5e6c00-fae5-445a-b312-2a6064491f8d.png)

---

### 共通名とSAN（サブジェクトの別名）を設定

![共通名とSAN](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/6658c248-9262-400b-8dc6-24f2db44376d.png)

- **共通名（CN）**：`web-vm1.domain.local`  
- **サブジェクトの別名（DNS名）**：`web-vm1.domain.local`, `web-vm1`

> 現代のブラウザ（特にEdgeやChrome）は、**SANフィールドを使ってドメインの正当性を検証**するため、必ず設定が必要です。

---

### ⚠️ SANを設定しなかった場合のエラー

SANを省略すると、以下のような証明書エラーが発生します。

![SANなしエラー](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/acbbd85d-05bd-4125-8419-98904794242d.png)

> 「セキュリティ証明書では、サブジェクトの別名が指定されていません。」  
> Edgeの仕様変更により、**共通名（CN）のみの証明書は無効扱い**となる場合があります。

---

### 証明書の発行とインストール完了

![証明書インストール完了](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/180f69d3-0ab5-4cc0-971f-a0d7409b7457.png)

> 証明書の要求が完了し、AD CSから発行された証明書がWEB-VM1にインストールされました。

---


## IISに証明書をバインドしてHTTPSを有効化

WEB-VM1で取得した証明書を、IISにバインドしてHTTPS通信を有効にします。

---

### サイトのバインド設定

IISマネージャーから対象サイトを右クリック →「バインドの編集」を開き、「https」を追加します。  
ポートは `443`、ホスト名は `web-vm1.domain.local` を指定し、先ほど発行した証明書を選択します。

![サイトバインド設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/0982de91-2b55-447d-a7d1-30ce906d397b.png)

---

### HTTPS化されたWebアプリにアクセス

ブラウザから `https://web-vm1.domain.local/employee-app/` にアクセスすると、**鍵マーク付きで正しく表示**されました。

![HTTPSアクセス成功](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/d54b3e37-a396-4585-a0ef-6c705f27063c.png)

発行した証明書がブラウザに信頼され、HTTPS通信が問題なく行えていることが確認できます。

---

### 証明書チェーンの確認

証明書ビューアーを開くと、**CA（AD-VM1）から発行された証明書のチェーン**も正しく構成されていました。

![証明書チェーン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4037248/7f216882-bf8f-4c6d-8995-6c08e1a021f8.png)

`domain-ad-vm1-CA` をルートとした階層が確認でき、社内CAによるHTTPS化が正常に機能している状態です。

---