AWS クライアントVPNを試してみた

はじめに

  • 本記事は、とりあえず一度試してみよう、という方向けに手順を書いています。AWS Client VPNについての情報、リンク等は最後にまとめています。
  • Windows 10 Pro バージョン 20H2 で実施しました。
  • 本記事の手順で作成する証明書(CA証明書、クライアント証明書、サーバ証明書)はいずれも有効期限が作成から10年となるようです。
  • 結構がっつりハンズオンみたいな資料になってしまいました😋

構成図

構成図

手順

前提

AWSアカウントは作成済とします

必要なソフトの準備

OpenVPN クライアントと、vpnux PKI Managerの2つのソフトを準備します。 ダウンロード元ページは → こちら

OpenVPN クライアント

  1. 上記のページから「Windowsインストーラ(64ビット版)」をダウンロードする

  2. ダウンロードしたmsiファイルをダブルクリックして実行する

  3. 「Install Now」を選択する main_2021-07-25-12-11-04 ※ユーザーアカウント制御のダイアログが出たら、「はい」を選択する

  4. インストールが完了したら、「Close」を選択する main_2021-07-25-12-14-22

  5. プロファイルが無いよ、というダイアログが出るが、気にせず「OK」を選択する main_2021-07-25-12-24-41

vpnux PKI Manager

.NET Framework 3.5が入っているか確認する

  1. Windowsキー + 「R」キーを押下して、「ファイル名を指定して実行」を表示させる

  2. 「appwiz.cpl」と入力し、Enterキーを押下する main_2021-07-25-12-21-52

  3. 「Windowsの機能の有効化または無効化」を選択する main_2021-07-25-21-12-55

  4. .NET Framework 3.5のところが有効になっているか確認する main_2021-07-25-12-31-01

インストール

  1. 上記のページから「vpnux PKI Manager」をダウンロード

  2. ダウンロードしたzipファイルを解凍し、任意のフォルダに置く

相互認証用の証明書の作成

プライベートCAの構築

  1. vpnux PKI Manager(vpnuxPKI.exe)を実行する

  2. 新規CA構築のダイアログにて、「OK」を選択する main_2021-07-25-13-06-26

  3. 「CAの新規作成」を選択する main_2021-07-25-13-07-36

  4. 確認ダイアログが開くので、「はい」を選択する main_2021-07-25-13-08-38

  5. 任意のフォルダを選択し、「OK」を選択する main_2021-07-25-13-12-36

  6. 確認ダイアログが開くので、フォルダの中身を確認した後に「はい」を選択する main_2021-07-25-13-15-53

  7. 適宜証明書基本情報を入力し、「CA証明書作成」を選択する(ここではデフォルトのままにしている) main_2021-07-25-13-18-21

  8. しばらく時間がかかるので、待機する

  9. CA構築が完了したら、ダイアログが表示されるので、「OK」を選択する main_2021-07-25-13-20-53

  10. 証明書等が入ったフォルダが表示される main_2021-07-25-13-25-42

サーバ証明書の作成

  1. vpnux PKI Managerにて、「サーバー用 秘密鍵/証明書」を選択する main_2021-07-25-13-30-31

  2. 適宜証明書情報を入力し、「証明書作成」を選択する(ここではserver.client-vpc-handson-20210725-sakainako.comとした)
    ドメインとして認識されるような名前をつけておく。デフォルトの「server_1」ではACMへの登録時にドメインが認識されなかった main_2021-07-25-15-43-17

  3. サーバ証明書作成が完了したら、ダイアログが表示されるので、「OK」を選択する main_2021-07-25-13-39-40

  4. サーバ証明書が作成されていることを確認する main_2021-07-25-15-44-35

クライアント証明書の作成

  1. vpnux PKI Managerにて、「クライアント用 秘密鍵/証明書」を選択する main_2021-07-25-13-43-07

  2. 適宜証明書情報を入力し、「証明書作成」を選択する(ここではclient.client-vpc-handson-20210725-sakainako.comとした) main_2021-07-25-15-46-45

  3. クライアント証明書作成が完了したら、ダイアログが表示されるので、「OK」を選択する main_2021-07-25-13-46-02

  4. クライアント証明書が作成されていることを確認する main_2021-07-25-15-47-43

相互認証用の証明書をACM(Amazon Certificate Manager)へ登録

  1. AWSコンソールの「サービス」から「Certificate Manager」を選択する main_2021-07-25-14-00-49

サーバ証明書のACMへの登録

  1. 一度もACMを使用したことがない場合、以下の画面が表示される。左側の「証明書のプロビジョニング」の下の「今すぐ始める」を選択する main_2021-07-25-14-03-34

  2. 上の方に表示されている「証明書のインポート」を選択する main_2021-07-25-14-06-40

※ACMを使用したことがある場合は、証明書の画面から「証明書のインポート」を選択する main_2021-07-25-14-35-27

  1. 以下の値を設定

    • 証明書本文
      • サーバ証明書ファイル(上記手順ではserver.client-vpc-handson-20210725-sakainako.com.crt)をテキストエディタで開き、中身をすべてコピーして貼り付ける
    • 証明書のプライベートキー
      • サーバ秘密鍵ファイル(上記手順ではserver.client-vpc-handson-20210725-sakainako.com.key)をテキストエディタで開き、中身をすべてコピーして貼り付ける
    • 証明書チェーン
      • CA証明書ファイル(上記手順ではca.crt)をテキストエディタで開き、中身をすべてコピーして貼り付ける

    main_2021-07-25-14-21-37

  2. 「次へ」ボタンを選択する main_2021-07-25-14-25-35

  3. タグは任意で設定し、「レビューとインポート」を選択する main_2021-07-25-14-27-25

  4. 内容を確認し、「インポート」を選択する 「ドメイン」に値が入っていることを確認しておく。ドメインが「-」となっていた場合、後の手順(クライアントVPNエンドポイントの作成)にてエラーが発生した。 main_2021-07-25-15-53-47 main_2021-07-25-14-30-19

  5. サーバ証明書がACMに登録されたことを確認する main_2021-07-25-16-03-35

  6. クライアントVPNエンドポイントの作成時に必要となるため、サーバ証明書のARNをメモしておく main_2021-07-25-16-05-36

クライアント証明書のACMへの登録

  • 本記事の手順で相互認証用の証明書を作成した場合、サーバ証明書とクライアント証明書の発行元認証機関(CA)が同じになる。この場合は、クライアント証明書のACMへの登録は必要ない。AWSドキュメントに記載がある
  • クライアント証明書の登録が必要な場合、手順はサーバ証明書と同じだが、以下の値を設定する
    • 証明書本文
      • クライアント証明書ファイル(上記手順ではclient.client-vpc-handson-20210725-sakainako.com.crt)をテキストエディタで開き、中身をすべてコピーして貼り付ける
    • 証明書のプライベートキー
      • クライアント秘密鍵ファイル(上記手順ではclient.client-vpc-handson-20210725-sakainako.com.key)をテキストエディタで開き、中身をすべてコピーして貼り付ける
    • 証明書チェーン
      • CA証明書ファイル(上記手順ではca.crt)をテキストエディタで開き、中身をすべてコピーして貼り付ける

VPCとサブネットの作成

VPCの作成

  1. 「サービス」から「VPC」を選択する main_2021-07-25-11-00-26

  2. 左のカラムから「VPC」を選択する main_2021-07-25-11-02-51

  3. 「VPCを作成」ボタンを選択する main_2021-07-25-11-17-13

  4. 以下の値を設定

    • 名前タグ:任意
    • IPv4 CIDR ブロック:172.16.0.0/16
    • 他はデフォルト main_2021-07-25-11-21-04
  5. 「VPCを作成」ボタンを選択する main_2021-07-25-11-23-18

  6. VPCが作成されたことを確認する main_2021-07-25-14-51-46

サブネットの作成

  1. 左のカラムから「サブネット」を選択する main_2021-07-25-11-25-50

  2. 「サブネットを作成」ボタンを選択する main_2021-07-25-11-27-37

  3. 以下の値を設定する

    • VPC
      • VPC ID:先程作成したVPC
    • サブネットの設定
      • サブネット名:任意
      • アベイラビリティーゾーン:任意
      • IPv4 CIDR ブロック:172.16.0.0/24
      • 他はデフォルト main_2021-07-25-11-34-06 main_2021-07-25-11-34-27
  4. 「サブネットを作成」ボタンを選択する main_2021-07-25-11-35-53

  5. サブネットが作成されたことを確認する main_2021-07-25-14-52-55

クライアントVPN エンドポイントの作成

  1. 「クライアント VPN エンドポイント」を選択する main_2021-07-25-15-00-43

  2. 「クライアント VPN エンドポイントの作成」ボタンを選択する main_2021-07-25-15-02-21

  3. 以下の値を設定する

    • 名前タグ:任意
    • 説明:任意
    • クライアント IPv4 CIDR:10.0.0.0/16
    • サーバ証明書 ARN:サーバ証明書をACMに登録する時に控えておいた、サーバ証明書のARNを設定する
    • 認証オプション:相互認証の使用
    • クライアント証明書 ARN:本記事の手順の場合、サーバ証明書 ARNと同じ値を設定する
    • 接続ログ記録:「いいえ」を設定する
    • スプリットトンネルを有効にする:チェックをつける
    • 他はデフォルト main_2021-07-25-15-25-10 main_2021-07-25-16-10-47
  4. 「クライアント VPN エンドポイントの作成」ボタンを選択する main_2021-07-25-16-11-42

  5. 作成に成功したら、以下の表示が出るので、「閉じる」ボタンを選択する main_2021-07-25-16-14-12

  6. エンドポイントが作成されていることを確認する main_2021-07-25-16-15-46

サブネットをクライアントVPN エンドポイントに関連付ける

  1. 「関連付け」タブ → 「関連付け」ボタン の順に選択する main_2021-07-25-16-21-33

  2. 上記手順で作成したVPCとサブネットを設定する main_2021-07-25-16-23-43

  3. 「関連付け」ボタンを選択する main_2021-07-25-16-24-35

  4. 作成に成功したら、以下の表示が出るので、「閉じる」ボタンを選択する main_2021-07-25-16-25-40

  5. しばらく時間がかかるので、適宜更新ボタンで更新しつつ、待機する。状態が「使用可能」、「関連付け済み」となれば使用可能 main_2021-07-25-16-32-48

クライアントVPNエンドポイントに承認ルールを追加する

  1. 「認証」タブ → 「受信の承認」ボタン の順に選択する main_2021-07-25-16-36-54

  2. 以下の値を設定する

    • アクセスを有効にする送信先ネット:172.16.0.0/16 ※VPCのCIDR
    • アクセスを付与する対象:すべてのユーザーにアクセスを許可する
    • 説明:任意 main_2021-07-25-16-42-15
  3. 「認証ルールの追加」ボタンを選択する main_2021-07-25-16-43-07

  4. 追加に成功したら、以下の表示が出るので、「閉じる」ボタンを選択する main_2021-07-25-16-44-05

クライアント設定のダウンロード

  1. 「クライアント設定のダウンロード」ボタンを選択する main_2021-07-25-16-52-59

  2. 確認のウィンドウが表示されるので、「ダウンロード」ボタンを選択する main_2021-07-25-16-54-07

ダウンロードしたクライアント設定の編集

  1. ダウンロードしたクライアント設定ファイルをテキストエディタで開く

  2. 以下の2行を追加する

    • cert {クライアント証明書ファイルのパス}
    • key {クライアント秘密鍵ファイルのパス}

    ※Windowsのパスに含まれる\(バックスラッシュ・円マーク)は\\としてエスケープする必要がある

    • 編集例↓ main_2021-07-25-17-40-31
  3. クライアント設定ファイルを保存して閉じる

OpenVPNクライアントで接続

  1. OpenVPNクライアントを起動し、タスクトレイにあるアイコンを右クリック → 「Import file」を選択する main_2021-07-25-17-08-28

  2. 上記で編集済のクライアント設定ファイルを選択し、「開く」ボタンを選択する main_2021-07-25-17-11-12

  3. インポートに成功したら、以下のウィンドウが表示されるので、「OK」を選択する main_2021-07-25-17-12-33

  4. タスクトレイにあるアイコンを右クリック → 「接続」を選択する main_2021-07-25-17-28-42

  5. 接続に成功すると、以下の通知が出る main_2021-07-25-17-44-05

EC2をプライベートサブネットに立てて、アクセスしてみる

EC2インスタンスの起動

  1. 「サービス」から「EC2」を選択する main_2021-07-25-17-47-32

  2. 左のカラムから「インスタンス」を選択する main_2021-07-25-17-49-11

  3. 「インスタンスを起動」ボタンを選択する main_2021-07-25-17-51-00

  4. AMIは、Windows Server 2019 Base を選択 main_2021-07-25-17-54-12

  5. インスタンスタイプは、「t2.small」を選択し、「次のステップ:インスタンスの詳細の設定」ボタンを選択する main_2021-07-25-17-58-10

  6. 以下の値を設定し、「次のステップ:ストレージの追加」ボタンを選択する

    • インスタンス数:1
    • ネットワーク:上記で作成したVPC
    • サブネット:上記で作成したサブネット
    • 他はデフォルト main_2021-07-25-18-02-10 main_2021-07-25-18-03-40
  7. 設定はデフォルトのままで、「次のステップ:タグの追加」ボタンを選択する main_2021-07-25-18-05-17

  8. 設定はデフォルトのままで、「次のステップ:セキュリティグループの設定」ボタンを選択する main_2021-07-25-18-06-19

  9. 以下の値を設定し、「確認と作成」ボタンを選択する

    • セキュリティグループの割り当て:既存のセキュリティグループを選択する
    • セキュリティグループID:VPCのデフォルトセキュリティグループ main_2021-07-25-18-10-13
  10. 「起動」ボタンを選択する main_2021-07-25-18-12-23

  11. 以下の値を設定し、「キーペアのダウンロード」ボタンを選択する

    • 新しいキーペアの作成 を選択
    • キーペア名:任意の名前 main_2021-07-25-18-15-28
  12. キーペアがダウンロードできたら、「インスタンスの作成」ボタンを選択する main_2021-07-25-18-19-48

  13. インスタンスの作成中画面が出たら、「インスタンスの表示」ボタンを選択する main_2021-07-25-18-36-25

EC2インスタンスへの接続

  1. ステータスチェックが終わって起動したら、作成したインスタンスを選択して、「接続」を選択する main_2021-07-25-18-22-22

  2. 「RDPクライアント」→「パスワードを取得」の順に選択する main_2021-07-25-18-37-52

  3. 「Brouse」ボタンを選択する main_2021-07-25-18-26-11

  4. 上記でダウンロードしたキーペアを選択し、「開く」ボタンを選択する main_2021-07-25-18-27-53

  5. 「パスワードを復号化」ボタンを選択する main_2021-07-25-18-28-53

  6. パスワードが表示されるので、コピーボタンを押してコピーしておく main_2021-07-25-18-33-50

  7. Windowsキー + 「R」キーを押下して、「ファイル名を指定して実行」を表示させる

  8. 「mstsc」と入力し、Enterキーを押下する main_2021-07-25-18-32-20

  9. リモートデスクトップ接続のウィンドウが開くので、先程立ち上げたインスタンスのプライベートIPアドレスを入力し、「接続」を選択する main_2021-07-25-18-41-24

  10. ユーザー名に「Administrator」、パスワードに、上記でコピーしたパスワードを入力し、「OK」を選択する main_2021-07-25-18-45-36

  11. 警告のウィンドウが出るが、気にせず「はい」を選択する main_2021-07-25-18-46-53

  12. 接続できました! main_2021-07-25-18-49-26

VPNを切断すると・・・ main_2021-07-25-18-54-04

もちろん接続が切れます! main_2021-07-25-18-54-53

お片付け

EC2インスタンスの終了

  1. AWSコンソールのEC2 → インスタンスから、今回作成したインスタンスを選択し、「インスタンスの状態」 → 「インスタンスを終了」を選択する main_2021-07-25-18-58-49

  2. 終了確認のウィンドウにて、「終了」を選択する main_2021-07-25-19-00-05

キーペアの削除

  1. AWSコンソールのEC2 → キーペアから、今回作成したキーペアを選択し、「アクション」 → 「削除」を選択する main_2021-07-25-19-04-21

  2. 削除確認のウィンドウにて、「削除」と入力し、「削除」ボタンを選択する main_2021-07-25-19-05-49

クライアントVPNエンドポイントの関連付けの解除

  1. AWSコンソールのVPC → クライアントVPNエンドポイントから、今回作成したクライアントVPNエンドポイントを選択し、「関連付け」タブ → 「関連付けの解除」ボタンを選択する main_2021-07-25-19-18-52

  2. 解除確認のウィンドウにて、「はい、関連付けを解除する」ボタンを選択する main_2021-07-25-19-19-54

  3. しばらく時間がかかるので、適宜更新ボタンで更新しつつ、待機する。関連付けが消えれば完了 main_2021-07-25-19-30-04

クライアントVPNエンドポイントの削除

  1. AWSコンソールのVPC → クライアントVPNエンドポイントから、今回作成したクライアントVPNエンドポイントを選択し、「関連付け」タブ → 「関連付けの解除」ボタンを選択する main_2021-07-25-19-42-03

  2. 削除確認のウィンドウにて、「はい、削除する」を選択する main_2021-07-25-19-43-47

  3. クライアントVPNエンドポイントが消えれば、削除完了 main_2021-07-25-19-44-34

VPCの削除

  1. AWSコンソールのVPCから、今回作成したVPCを選択し、「アクション」 → 「VPCの削除」を選択する main_2021-07-25-19-14-54

  2. 削除確認のウィンドウにて、「削除」と入力し、「削除」ボタンを選択する main_2021-07-25-19-32-16

  3. VPCが消えれば、削除完了 main_2021-07-25-19-33-30

ACMから相互認証用の証明書を削除

  1. AWSコンソールのACMから、今回作成した証明書を選択し、「アクション」 → 「削除」を選択する main_2021-07-25-19-38-24

  2. 削除確認のウィンドウにて、「削除」ボタンを選択する main_2021-07-25-19-45-58

OpenVPNクライアントの終了とアンインストール

  1. タスクトレイにあるアイコンを右クリックし、「終了」を選択する main_2021-07-25-19-50-54

  2. Windowsキー + 「R」キーを押下して、「ファイル名を指定して実行」を表示させる

  3. 「appwiz.cpl」と入力し、Enterキーを押下する main_2021-07-25-12-21-52

  4. 「OpenVPN」 → 「アンインストール」の順に選択する main_2021-07-25-19-54-09

  5. 確認のウィンドウが表示された場合、「はい」を選択する main_2021-07-25-19-55-50 ※ユーザーアカウント制御のダイアログが出たら、「はい」を選択する

  6. C:\Users\ユーザー名のフォルダにある「OpenVPN」フォルダを削除する main_2021-07-25-20-02-39

vpnux PKI Managerの終了とファイル削除

  1. vpnux PKI Managerのメニューから、「ファイル」 → 「終了」を選択する main_2021-07-25-19-58-48

  2. 証明書作成の際に作ったフォルダを削除する main_2021-07-25-20-06-11

  3. ダウンロードして解凍したvpnux PKI Managerのフォルダを削除する main_2021-07-25-20-07-45

参考にしたサイト