Azure VPNGateway で個人PCからAAD認証で接続してみる

リモートワークが必要な昨今において、クラウドと個人を手軽に接続できる方法を試してみました
今回接続元の個人端末はWindows10端末になります

### Azure への接続方法
Azure に接続するための方法としては下記2つの方法をとることが可能です
(1)ネイティブ Azure 証明書認証
　 デバイス上にあるクライアント証明書が、接続するユーザーの認証に使用されます
(2)ネイティブ Azure Active Directory 認証
　ユーザーは Azure Active Directory 資格情報を使用して、Azure に接続できます。 
　ネイティブ Azure AD 認証は、OpenVPN プロトコルと Windows 10 のみでサポートされており、Azure VPN クライアントを使用する必要があります。

今回は(2)のAAD認証を使用したバージョンで試してみます

### P2S用 VPNの作成
(1)接続先の仮想ネットワークを作成するため、メニューから「仮想ネットワーク」をクリック
![VPNP2S-AAD_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/60dfec70-a81f-98b2-4965-e27a5b606616.png)

(2)「追加」をクリック
![VPNP2S-AAD_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/2023f28e-25ca-f7e9-7206-5e3a86ab70fb.png)

(3)基本タブでリソースグループやインスタンス名を追加
![VPNP2S-AAD_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/7e23a671-c54e-a45c-2e3d-898e64358266.png)

(4)IPアドレスタブで必要なネットワーク設定を追加
　　セキュリティタブはとりあえずデフォルト
![VPNP2S-AAD_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/9c05e2a1-2c89-4c99-b2de-59efcf4c1f46.png)

(5)「確認及び作成」で検証に成功したら「作成」をクリック
![VPNP2S-AAD_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/2209163d-250a-95b1-ebb5-f28ed329d0fc.png)

(6)検索窓から「仮想ネットワークゲートウェイ」を検索
![VPNP2S-AAD_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/d25d0114-9cb9-34ac-5b93-f6e45bb7ae64.png)

(7)「追加」をクリック
![VPNP2S-AAD_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/552f1377-8cf4-c244-118b-b5d8afe220c3.png)

(8)(3)(4)で設定した情報を含めて設定情報を記載し「確認及び作成」をクリック
![VPNP2S-AAD_15-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/19005e0b-2d51-90d4-ad71-a32dc779b5d1.png)
![VPNP2S-AAD_15-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/f330711d-783f-1535-35de-705de2a8086b.png)

(9)検証に成功したら「作成」をクリック
![VPNP2S-AAD_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/e6c0efd1-59a3-e8aa-7d41-02c2bf9c262e.png)



### Azure Active Directory テナントを作成する
(1)ホーム -> Azure Active Directory から Azure AD テナントを確認します。ない場合は新しいテナントを作成
   図は作成済み
![VPNP2S-AAD_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/2e2fa66f-0366-f613-e67e-75a93a5e1806.png)

(2)ユーザを作成します
　　とりあえずテストなので、それぞれ「グローバル管理者」と「User」の権限を持ったユーザを作成
　　「グローバル管理者」アカウントはログインして作業しているユーザとは別で作ったほうが良いかもしれません
![VPNP2S-AAD_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/fe757b4c-33c0-34d1-987e-36085294ba43.png)

(3)VPN Gateway での Azure AD 認証を有効にするため、プロパティをクリック
![VPNP2S-AAD_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/2f985a40-cf02-f00a-7f70-3957749ebacb.png)

(4)ディレクトリIDをコピー
![VPNP2S-AAD_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/717daff9-e0db-2e5c-8a58-faac2b384fbd.png)

(5)(2)で作成した「グローバル管理者」アカウントで Azure Portal にログイン
![VPNP2S-AAD_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/9063f723-56d4-6778-aac7-a3c5da460999.png)

(6)ログイン完了したら、ブラウザのアドレスバーに下記URLをコピーし管理者の同意を与える
　　※[公式サイト](https://docs.microsoft.com/ja-jp/azure/vpn-gateway/openvpn-azure-ad-tenant#3-enable-azure-ad-authentication-on-the-vpn-gateway)には政府関連や中国用のURLもあるので用途に合わせてご参照ください
![VPNP2S-AAD_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/c44f6703-5054-c1d4-3486-d5e8e1357d36.png)

```
パブリック
https://login.microsoftonline.com/common/oauth2/authorize?client_id=41b23e61-6c1e-4545-b367-cd054e0ed4b4&response_type=code&redirect_uri=https://portal.azure.com&nonce=1234&prompt=admin_consent
```

(7)Azure AD の「エンタープライズアプリケーション」に「Azure VPN」が表示されていることを確認
![VPNP2S-AAD_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/4ecdb610-0df6-6bd8-1b71-9fb64bd6b681.png)


### 証明書の生成
今回はテストなのでオレオレ証明書でテストします
(本来は当然正式なものを使いましょう)

(1)ルート証明書を作成するため、特権ユーザでPewerShellを起動
![VPNP2S-AAD_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/794ca2cf-da24-bd79-bd98-f383dc9b64ca.png)

(2)下記サンプルをベースにルート証明書を作成
(下記の場合は「P2SRootCert」という証明書を「Certificates-Current User\Personal\Certificates」に自動的にインストールされる)

```
$cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
-Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
```

(3)そのまま同じプロンプトでクライアント証明書を生成
(下記の場合は「P2SChildCert」という証明書を「Certificates - Current User\Personal\Certificates」に自動的にインストールされる)

```
New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject "CN=P2SChildCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
```

(4)公開キーは後でAzure にアップロードするためエクスポートします
　「ユーザー証明書の管理」を開き自己署名ルート証明書を探して右クリック
![VPNP2S-AAD_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/ae633554-f801-af25-0b59-c03fe205a899.png)

(5)「すべてのタスク」->「エクスポート」の順にクリック
![VPNP2S-AAD_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/1bea4085-dfad-444a-6d6d-aee6faa08940.png)

(6)エクスポートウィザードが起動するので「次へ」をクリック
![VPNP2S-AAD_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/da30f131-b206-8a52-8c34-46fb1adee558.png)

(7)「いいえ、秘密キーをエクスポートしません」を選択し「次へ」をクリック
![VPNP2S-AAD_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/82c52f22-f657-ee8a-9741-db8b171fd5f7.png)

(8)「Base-64 encoded X.509 (.CER)」を選択し「次へ」をクリック
![VPNP2S-AAD_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/9fa64554-624b-9c0c-8844-87cb70f7607e.png)

(9)「参照」をクリックしエクスポート先を指定し「次へ」をクリック
![VPNP2S-AAD_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/fbfa949b-8cf8-f25d-73ab-35ae4123e848.png)

(10)「完了」をクリック
![VPNP2S-AAD_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/b7ee0d75-311c-d4a7-8d1b-350433afc15a.png)

(11)同様にクライアント証明書をエクスポートします
　「ユーザー証明書の管理」を開きクライアント証明書を探して右クリック
　「すべてのタスク」->「エクスポート」の順にクリック
![VPNP2S-AAD_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/02a61ecf-e8eb-a6b2-ff19-782ca234634f.png)

(12)エクスポートウィザードが起動するので「次へ」をクリック
![VPNP2S-AAD_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/da30f131-b206-8a52-8c34-46fb1adee558.png)

(13)「はい、秘密キーをエクスポートします」を選択し「次へ」をクリック
![VPNP2S-AAD_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/eb50e870-6fbd-9366-14a7-abf7a86ecafd.png)

(14)「証明書のパスにある証明書を可能であればすべて含む」「証明書のプライバシーを有効にする」にチェックが入っていることを確認し「次へ」をクリック
![VPNP2S-AAD_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/c1440a65-23fa-b469-2cc2-794160ae51a8.png)

(15)秘密キーを保護する必要があるためパスワードを入力して「次へ」をクリック
![VPNP2S-AAD_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/8c55f553-69e1-babe-a549-d3e048a7ad46.png)

(16)「参照」をクリックしエクスポート先を指定し「次へ」をクリック
![VPNP2S-AAD_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/64547bb6-056d-352f-28ea-52a7a6881686.png)


(17)「完了」をクリック
![VPNP2S-AAD_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/010798f1-ae81-4eaf-b057-a58b7601a99b.png)


### クライアント(接続PC)への証明書のインストール
もし証明書を作成した以外の端末を利用する場合は下記手順で証明書をインストールする必要があります

(1).pfxファイルを対象のPCに保存しダブルクリック
![VPNP2S-AAD_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/e6f2efbf-bdb5-69e4-c1db-5d9c707939a1.png)

(2)現在のPCにインストールする場合は「次へ」をクリック
![VPNP2S-AAD_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/6b3cdb24-061a-a04b-2cec-c45fd17c36ce.png)

(3)「次へ」をクリック
![VPNP2S-AAD_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/26bbfbe3-46cc-8ba2-8b76-24a6cd8ec3ae.png)

(4)前の手順(15)で設定したパスワードを入力し「次へ」をクリック
![VPNP2S-AAD_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/1f288d26-1ef2-f2e0-c226-416895f860d9.png)

(5)「次へ」をクリック
![VPNP2S-AAD_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/6e91913f-0040-2c24-e679-bc5907770c71.png)

(6)問題なければ「完了」をクリック
　　これで証明書がインポートされます
![VPNP2S-AAD_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/14c52b9b-239f-5a0e-7d83-62cd13a1dc05.png)


### クライアントアドレスプールの追加
P2SVPN経由で接続するクライアントはこの範囲内でIPアドレスを動的に受け取ります。

(1)先ほど作成した仮想ネットワークゲートウェイのページの設定から「ユーザVPN構成」をクリック
![VPNP2S-AAD_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/77cc0d10-6026-11a2-b181-f05b8e17071e.png)

(2)「今すぐ構成」をクリック
![VPNP2S-AAD_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/a362753a-dad5-b13a-0270-f73667b6f47b.png)

(3)設定を追加します
アドレスプール：プライベートIPアドレス範囲を追加します
　　　　　　　　VPNクライアントに指定した範囲から動的にIPアドレスが割り当てられます
　　　　　　　　最小のサブネット マスクは、アクティブ/パッシブ構成の場合は 29 ビット、
　　　　　　　　アクティブ/アクティブ構成の場合は 28 ビットです。
トンネルの種類：Windowsの場合最初にIKEv2 接続できなかった場合に SSTP にフォールバックします
 ![VPNP2S-AAD_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/f5856bad-7f71-7d53-37c3-c0f4b5fb1374.png)


(4)認証の種類と証明書を追加します
　 先ほど作ったルート証明書をメモ帳などで開く
![VPNP2S-AAD_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/bf390e25-61de-0c8e-936b-4f11eaafff42.png)
　　
(5)「公開証明書データ」欄に貼り付け「保存」をクリック
![VPNP2S-AAD_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/0c888a44-89b3-a38a-050c-dec6e7a5bd1c.png)


### VPNクライアント構成パッケージの生成とインストール
(1)先ほど設定したVPN構成から [VPN クライアントのダウンロード] をクリック
(クライアント構成パッケージが生成されるまでに数分かかります)
![VPNP2S-AAD_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/0f214f68-6d70-2ade-63d0-3b6e0b70fea3.png)


(2)VPN接続クライアント側でにダウンロードしたファイルをコピーし解凍
![VPNP2S-AAD_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/d7059c25-f3b2-2a37-71cb-c2a5e6cbeec6.png)

(3)クライアントのOSに合わせて各フォルダ内のexeをクリックしインストール
![VPNP2S-AAD_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/745dadb7-b811-b1d4-4664-7864ef94d5d2.png)

(4)ネットワークの設定 -> VPN で追加されたVPN接続の「接続」をクリック
![VPNP2S-AAD_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/b8348e60-56db-d9b6-0763-d06328a3b917.png)

(5)VPN接続ウィザードが出るので「接続」をクリック
![VPNP2S-AAD_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/09bd0eb0-57e0-8f84-8567-96e436624d04.png)

(6)「続行」をクリック
![VPNP2S-AAD_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/f26b8297-c66f-3f1f-fbe7-f4c9c0d1af35.png)

(7)接続が成功するとクライアントPC側にIPが割り振られ、
![VPNP2S-AAD_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/5b4dcfc2-5c8d-b4ab-b69b-42a8ead9f370.png)
Azure上にもコネクション情報が追加される
![VPNP2S-AAD_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313446/e0a41423-1d2c-627a-f7a4-25cbf132088c.png)


上記手順でエラーなくVPN接続は確立されました
ご参考までに