SSL-VPN(AWS Client VPN) の証明書発行を踏み台専用に用意したEC2インスタンス AmazonLinux2で行いました。AmazonLinux2にインストールしたeasyrsa3でサーバー証明書とクライアント証明書をEC2インスタンスの中で発行したあと、aws‐cliのコマンド操作でACMにサーバー証明書とクライアント証明書をアップロードします。
この場合、EC2からACMへ証明書アップロードするためのIAMロールを設定しておかないとaws-cliコマンドでACMにアップロードできません。
そのため、EC2にIAMロールを設定する手順(ap-northeast-1 東京リージョンの場合)を記事にしました。リージョンが異なる場合は、気を付けてください。
IAMロールにアタッチするIAMポリシーは、フルアクセスじゃないほうがいいですが、面倒なのでフルアクセスにしました。
※ロール名はプロジェクトの命名ルールなど、お好きなように名前を付けられます。
IAMロールはEC2インスタンス1台に1つしかアタッチ出来ませんのでご注意ください。EC2インスタンス向けのIAMロールは、EC2インスタンスの初回起動時に、役割を含まずにEC2インスタンス名-roleという感じで命名して、EC2起動時は、IAMポリシー無しでIAMロールを最初からアタッチしておくと便利だと思います。
AWS CLIを使うためにaws-cliのコンフィグを設定します。EC2インスタンスにSSH接続して以下のコマンドを実行。
aws configure
AWS Access Key ID 、AWS Sercret Access Key は両方ともに未入力でEnter、Default reigion nameに東京リージョンとして以下を入力してEnter
ap-northeast-1
Default oputput format は
json
を入力してEnterでOK。
以下のコマンドで確認できる
cat ~/.aws/config
aws --version
証明書アップロード先は、S3ではなくACMとなります。
easyrsa3で証明書の更新期限100年とか、やっちゃだめですよ。
※アップロードコマンドは、以下の様にリージョンを指定してください(以下は東京)。EC2のセキュリティグループのhttp/https(おそらくhttps)のアウトバウンドを空けておかないと上記のコマンド実行してACMにアップロードきませんのでご注意ください。
aws acm import-certificate --certificate file://server.crt --private-key file://server.key --certificate-chain file://ca.crt --region ap-northeast-1
EC2でACMに証明書をアップロードするコマンド実行後、コンソール画面で以下の赤い部分あたりの様に各証明書のARNが表示されます。実際にAWSのACM画面で同じ証明書がアップロードされていることをARNで確認してください。
上記の手順の後、AWSのVPCダッシュボードでクライアントVPNの開始方法を見ながらAWS側の設定が必要です。かなり翻訳に違和感を感じますので、何が言いたいのか予測しながらゆっくりドキュメントを読んだほうがいいです。また、WEBサイトのadmin画面などの管理画面だけをサブドメインでClientVPN配下にしてブラウザで見られる様にしたい場合、Route53のプライべートホストゾーン、intenalのELB(内部向けロードバランサ)がそれぞれ別途必要です。ELBはinternet-facingとinternalの2つ同時使いになりますので、予算に元から組み込む必要があります。さらにClientVPNのENIは、WEBサーバのEC2インスタンスと同じLocalで通信出来るサブネットにする必要があります。このあたりは、別記事できちんと書こうと思います。
Windows10 ProにAWS ClientVPNをインストールしてovpnファイルを設定して「接続」にしても・・・、
「接続に失敗しました。もう一度お試しください。」
「vpnプロセスの開始に失敗しました。ポートは別のプロセスですでに使用されています。」
などの現象が起きます。Windows Deffender でしょうか。まだ、原因追求中です。
OpenVPNを使うとうまくいきますので、めんどくさいのでこの問題からは逃げましたw