IIS に公的証明書をバインドして 外部公開する

# はじめに
この記事では、構築済み IIS の Web サイトを 取得した外部ドメイン名を使って HTTPS で公開するまでの手順を紹介していきます。

# 前提事項
## ① IIS の構築
以下の記事で IIS を導入して サンプル Web サイトを表示する手順を公開しているため、事前に構築してください。

https://qiita.com/carol0226/items/4357e773efdbb08b5c52

:::note alert
なお、上記の手順を終えた段階では、以下のように HTTPS の Web ページ を参照することができません。この状態がスタート地点となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/dfe80dcf-1786-8ecb-0367-0f534c352144.png)
:::

## ② ドメインの取得
Web サイトを外部公開するためには、ドメインを取得して "www.ドメイン名" のような形で ホスト名を 外部 DNS サーバーに登録する必要があります。

以下の記事は、Azure を使って構築する場合の手順を公開しています。

https://qiita.com/carol0226/items/3ce40224c579e35017b0

上記とは別に、3rd パーティやプロバイダーなどのサービスを使って、ドメイン取得＆外部 DNS の公開をすることもできます。

## ③ 公的証明書の取得
Web サイト を HTTPS (SSL) で外部公開するためには、公的証明機関 が発行した サーバー証明書 が必要です。

以下の記事は、Azure を使って証明書を購入する場合の手順を公開しています。

https://qiita.com/carol0226/items/5dd5dbee714d23f9071d

上記とは別の 公的証明機関 から 証明書を購入することもできます。

# 構築手順
## 1. HTTPS ページの有効化
0. サーバーマネージャーから **インターネットインフォメーションサービス (IIS) マネージャー** を起動します。
　<br>
0. 外部公開したい Web サイト (Default Web Site) を右クリックし **バインドの編集** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2aa256c7-c85f-bde2-0ea9-5b978fa02e05.png)
　<br>
0. **追加** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1a179dfa-7035-05d0-d99c-bd464eb682f1.png)
　<br>
0. **種類** で **"https"** を選択して **SSL 証明書** は 選択可能な任意の証明書(TenantEncryptionCert 等) を選び、**OK** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/69949ba1-7421-a80e-fb92-b9b1bdeb901a.png)
　<br>
0. 以下の一覧に追加されたことを確認したら **閉じる** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/00cde033-f4c6-3ec1-cec8-c5d55b619e96.png)
　<br>
0. ブラウザを起動して https://127.0.0.1 へ アクセスを行うと、下図のように表示されます。
**詳細設定** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8a346e1b-62e8-0b2f-3b6c-512db3b5738c.png)
**127.0.0.1 に進む（安全ではありません）** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bf8120e9-adf1-070b-2141-80487d5e5880.png)
　<br>
0. すると、ようやく 以下のように Web サイトが表示されますが、**セキュリティ保護なし** の状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d2e26cf7-bb56-3c49-6f8d-df02ba2dbaae.png)

:::note warn
このように HTTPS を有効にしただけでは、Web サイトを開くことはできますが、**セキュリティ保護なし** になってしまいます。
さらに、この時点では 外部から Web サイトにはアクセスできない状態です。
:::

## 2. Web サイトの外部公開
:::note info
本章では、IIS の Web サイトを 外部公開します。

手順では、Azure VM 上に構築した IIS を外部公開する手順を説明していますが、オンプレミス環境の IIS の場合は、Firewall やリバースプロキシなどを使って、インターネット上の パブリック IP アドレス を使って、外部公開してください。
:::

**Azure VM の場合の手順**

0. IIS を導入した 仮想マシンの左ペインで **ネットワーク設定** を開き、**＋ポートルールの作成** から **受信ポートルール** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d5d97b92-95e2-6a67-5b89-b7a5b294d2e6.png)
　<br>
0. 以下の画面で サービス **Custom** を選択して 宛先ポート範囲は **80,443** を入力します。
プロトコルは **TCP**、アクションは **許可**、名前 は、任意の名前 を記入して、**追加** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7d8a8fa4-594d-a6f0-9383-164c788e27c6.png)
　<br>
0. 下図のように 一覧 に作成したルールが追加されたことを確認します。
緑枠の個所の **パブリック IP アドレス** の値をコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d497e264-1c42-ef2c-179a-95aa9e6a871b.png)
　<br>
0. ブラウザを起動して、**http://** [パブリック IP アドレス] にアクセスします。
以下の画面は、世界中の どの PC からでも同じように参照することができます。
スマートフォンのブラウザなどからアクセスしてみると、良く分かると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ffab1187-c724-780e-365a-be3a7d15c9d6.png)
　<br>
0. 同様に、ブラウザから **https://** [パブリック IP アドレス] にアクセスします。
HTTPS の場合は、以下のように **セキュリティ保護なし** になってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/73b9a6b1-4b24-967c-e889-e6a2a1c2c4c9.png)

:::note info
社内にある IIS のサーバー を 外部公開することで、世界中の PC から参照できることがわかりました。
:::

:::note warn
しかし、今の段階では IP アドレス を使ってアクセスする必要がありますし、HTTPS のサイトは **セキュリティ保護なし** になってしまいます。
:::

## 3. 外部ドメインの購入と 外部 DNS サーバーの構成
前提事項の **② ドメインの取得** で説明しましたが、外部ドメインの購入と 外部 DNS サーバーの構成を行います。

https://qiita.com/carol0226/items/3ce40224c579e35017b0

上記の構成が完了したら、続けて A レコード の追加が必要です。
以下の手順を実施してください。

**外部 DNS に A レコードを追加する手順**

0. 左ペインの **レコードセット** を選択して **＋追加** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/eb649cb9-067c-6b8d-ae06-d6fd170319d4.png)
　<br>
0. 名前欄に **www** を入力して、IP アドレス欄に、Web サイトの パブリック IP アドレス を入力して **追加** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3c8752b4-2761-4732-91ec-61b12438de54.png)
　<br>
0. 以下のように 一覧に 追加されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4db53c15-2f02-1c9e-8f94-db646e2fa228.png)
　<br>
0. ブラウザを起動して、**http://** [www.外部ドメイン名] にアクセスします。
取得したドメイン名を使って、Web サイトが参照できるようになったことが判ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c3a7eb6f-8e11-f52f-0551-934329abac60.png)
　<br>
0. 同様に、ブラウザから **https://** [www.外部ドメイン名] にアクセスします。
HTTPS の場合は、以下のように **セキュリティ保護なし** になってしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c26d54a1-4bf6-578b-75f0-8c7219d0970c.png)
**安全ではありません** を押して、サイトを開いても 以下の状態です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3a9cb1ad-1133-3603-d32d-a8313db0c0a8.png)

:::note info
FQDN (取得したドメイン名+ホスト名）を使って、外部からアクセスできるようになりました。
:::

:::note warn
FQDN を使って、外部からアクセスできるようになっても、HTTPS の **セキュリティ保護なし** の状態に変化がないことが判ります。
:::

## 4. 公的証明書を発行して、証明書を取得（ダウンロード）する
前提事項の **③ 公的証明書の取得** で説明しましたが、公的証明書 を購入して サーバー証明書 を取得してください。

https://qiita.com/carol0226/items/5dd5dbee714d23f9071d

:::note warn
**注意**
上記の記事では **"sfb.carol226.com"** というネイキッドドメイン名 を使って発行する内容になっています。別のタイミングで記事を書いたことが理由です。

**"www.carol226.com"** の証明書を取得するためには、**"carol226.com"** というネイキッドドメイン名で申請する必要があります。

そのため、上記の記事は、ネイキッドドメインの箇所を 読み替えながら参照してください。
:::

:::note info
以下は、**carol226.com** で申請して発行された証明書の画面です。 
この画面から、エクスポートした証明書を使って、後続の作業の画面キャプチャを取得しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/15b0768b-c446-6ef9-d062-13afb0c5b451.png)
:::

## 5. 証明書のインポート
IIS のサーバー上で作業を行ってください。

0. 前章で取得（ダウンロード）した証明書を右クリックして **PFX のインストール** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/67527d82-f5f2-8d8f-5384-2c1ed4fcdf08.png)
　<br>
0. **ローカルコンピューター** を選択して **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/987453b8-6ca1-fe4e-f9b1-b763e3e8e489.png)
　<br>
0. ダウンロードしたファイルが選択されているので **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/810278ca-67e6-da53-84dd-d3785ce936f6.png)
　<br>
0. 特に何も指定せずに **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/60b6e383-f6f7-f1ab-bf30-e4a943f7ef19.png)
　<br>
0. 特に何も指定せずに **次へ** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6b0d2296-67a4-b5b9-2e33-197986c8b5d8.png)
　<br>
0. 以下の画面になったら、**完了** を押して終了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ae46d13a-d2aa-6d92-6fc2-6fb49c1c1285.png)

## 6. 公的証明書を Web サイト にバインドする

0. インターネットインフォメーションサービス マネージャー を起動します。
以下の画面で 公開したい Web サイト（Default Web Site）を右クリックして **バインドの編集** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2aa256c7-c85f-bde2-0ea9-5b978fa02e05.png)
　<br>
0. **https** の行を選択して **編集** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4132b34d-22f1-3d8c-9178-36b2a9087b05.png)
　<br>
0. 以下のように HTTPS のサイト条件を追加して、**SSL 証明書** 欄で 先ほどインポートした証明書を選択してから、**OK** を押します。
もし、証明書が選択出来ない場合は、証明書の作成やインポートで 何かミスがあるはずなので確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e6502b0c-60c4-0396-d57f-723c5931caba.png)
　<br>
0. 以下のように HTTPS のサイトが追加されたことを確認して **閉じる** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1e8cc099-fd75-4711-c2a9-460945cf5c3c.png)
　<br>
0. すると、以下のように 世界中の任意の PC から、URL を指定して HTTPS の Web サイトを参照できるようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c7b4e489-aba0-ddd3-88bf-84e6d0ecfbd9.png)
　<br>
0. 証明書も セキュリティで保護された状態であることを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f2b3267b-e1fb-5e9d-76bc-303b52f0dc38.png)

:::note info
ここまで構築が完了すると、世界中の PC から HTTPS のサイトを参照できることが可能になっています。
:::

なお、www.carol226.com のサイトは、この記事を書き上げたら STOP してしまいます。
VM 代が掛かってしまうのと、証明書は 他の目的で使いたいため。
ご承知おきください。