AWS Client VPN で作るリモート接続環境②
こんにちは。米須です。
今回からリモート環境を構築するための設定について説明していきますが、まずは認証に関する設定から始めていきたいと思います。
AWS Client VPN における認証
認証の方法には下記の3つがあります。
- Active Directory 認証(ユーザベース)
- 相互認証(証明書ベース)
- シングルサインオン (SAML ベースのフェデレーション認証) (ユーザーベース)
また、相互認証とその他の認証(Active Directory 認証 or フェデレーション認証)を組み合わせることもできます。相互認証のみだと、証明書の漏洩などがあった場合に容易に入られてしまうので、相互認証+Active Directory 認証の構成を選択しました。
[AWS ドキュメント]
認証
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/client-authentication.html
相互認証の構築
1.証明書の作成
証明書の作成手順は AWS ドキュメントに記載されています(さすが、ドキュメントが充実してます^^)。github から クローンする手順があるので、AWS 上のパブリックサブネットに EC2(Linux)を構築して実施しました。
※ Amazon Linux2 には git が入っていないので、必要に応じて git もインストールしましょう
[AWS ドキュメント]
相互認証
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/client-authentication.html#mutual
ここからは、AWS ドキュメントに沿って実施してみます。
① github から esay-rsa をクローンし、easy-rsa/easyrsa3 フォルダに移動します


② PKI 環境を初期化します

③ 新しい認証機関 (CA) を構築します
※ Common Name はデフォルト値にしました。

④ サーバー証明書とキーを生成します

⑤ クライアント証明書とキーを生成します

ここまでの手順で下記のファイルが作成されます。
- pki/ca.crt
- pki/issued/server.crt
- pki/private/server.key
- pki/issued/client1.domain.tld.crt
- pki/private/client1.domain.tld.key
2.ACM へのインポート
サーバー証明書とキー、およびクライアント証明書とキーを ACM にインポートします。AWS ドキュメントのように CLI で実行することもできますが、マネコンからインポートすることもできます。
まず、AWS Certificate Manager を開き、「証明書のインポート」ボタンを押下します。

証明書の作成のところで作成した server.crt、server.key、ca.crt のファイルの中身を、各項目に貼り付け、「次へ」ボタンを押下します。ファイルの内容を貼り付ける際は、「—–BEGIN PRIVATE KEY—–」や「—–END PRIVATE KEY—–」もそのまま貼り付けます。

必要に応じてタグをつけて、「レビューとインポート」ボタンを押下します。

最後に「インポート」ボタンを押下します。

インポートできたことが確認できます。

同様に、クライアント証明書やキーなどをインポートします。ステップ1:証明書のインポートでは、上から順にclient1.domain.tld.crt、client1.domain.tld.key、ca.crt のファイルの内容を貼り付けます。
さいごに
サーバとクライアントの証明書がインポート出来たら、証明書関連の作業は終わりです。この辺りはあまり触った経験がなかったので手順の確認などに時間がかかりましたが、手順自体はそんなに難しくないので、慣れたらすんなりできそうです。
次回は、Active Directory 認証の設定について説明したいと思います。