AWS ClientVPN証明書をAmazonLinux2で発行するためのIAM設定手順
SSL-VPN(AWS Client VPN) の証明書発行を踏み台専用に用意したEC2インスタンス AmazonLinux2で行いました。AmazonLinux2にインストールしたeasyrsa3でサーバー証明書とクライアント証明書をEC2インスタンスの中で発行したあと、aws‐cliのコマンド操作でACMにサーバー証明書とクライアント証明書をアップロードします。
この場合、EC2からACMへ証明書アップロードするためのIAMロールを設定しておかないとaws-cliコマンドでACMにアップロードできません。
そのため、EC2にIAMロールを設定する手順(ap-northeast-1 東京リージョンの場合)を記事にしました。リージョンが異なる場合は、気を付けてください。
EC2からACMへのフルアクセスのIAMロールを作る
IAMロールにアタッチするIAMポリシーは、フルアクセスじゃないほうがいいですが、面倒なのでフルアクセスにしました。
- IAMロールへ進み、ロールの作成へ
- ロールを割り当てるサービスでEC2を選び次へ
- IAMロールにアタッチするIAMポリシーは、AWSCertificateManagerFullAccess(検索でCertificateで出てくる)を選び次へ
- タグは 例えば、iam-role-ec2-acm-fullaccess とした。次へ
- ロール名 ec2-acm-fullaccess ロールの説明も同じく ec2-acm-fullaccess 次へ
- ロールの作成 をクリック
※ロール名はプロジェクトの命名ルールなど、お好きなように名前を付けられます。
ロールをEC2インスタンスにアタッチ
IAMロールはEC2インスタンス1台に1つしかアタッチ出来ませんのでご注意ください。EC2インスタンス向けのIAMロールは、EC2インスタンスの初回起動時に、役割を含まずにEC2インスタンス名-roleという感じで命名して、EC2起動時は、IAMポリシー無しでIAMロールを最初からアタッチしておくと便利だと思います。
- EC2ダッシュボードのインスタンスへ
- 該当のEC2インスタンスにチェックを入れる
- アクション「インスタンスの設定」
- IAMロールの割り当て/置換
- ロール名 ec2-acm-fullaccess を選ぶ
- 適用
AWS CLIコンフィグ設定
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。
AWS CLIコンフィグの中身の確認方法
以下のコマンドで確認できる
cat ~/.aws/config
AWS CLIバージョン確認
aws --version
EC2にSSH接続してAWS-CLIで証明書を作成してACMへ証明書アップロード
証明書アップロード先は、S3ではなくACMとなります。
- EC2インスタンスにSSH接続(AWS Systems Manager セッションマネージャーのSSHトンネルに置き換えている途中で・・・、すみません・・・)
- OpenVPN/easy-rsaをgit cloneするため、gitをEC2インスタンスにインストール
- easyrsa3をgit clone
- 認証 – AWS Client VPN の「相互認証」の手順でサーバー証明書/クライアント証明書を作成し、各種証明書を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で通信出来るサブネットにする必要があります。このあたりは、別記事できちんと書こうと思います。
AWS ClientVPN接続がWindows10 Proで接続出来ない
Windows10 ProにAWS ClientVPNをインストールしてovpnファイルを設定して「接続」にしても・・・、
「接続に失敗しました。もう一度お試しください。」
「vpnプロセスの開始に失敗しました。ポートは別のプロセスですでに使用されています。」
などの現象が起きます。Windows Deffender でしょうか。まだ、原因追求中です。
OpenVPNを使うとうまくいきますので、めんどくさいのでこの問題からは逃げましたw
>Windows10 ProにAWS ClientVPNをインストールしてovpnファイルを設定して「接続」にしても・・・、
>「接続に失敗しました。もう一度お試しください。」
>「vpnプロセスの開始に失敗しました。ポートは別のプロセスですでに使用されています。」
この件について、同様の現象で突然使えなくなったことがあります。私の場合、接続に必要であろう
ネットワークインターフェイスを無効にしてしまっていたことが原因でした。
Windowsの「ネットワーク接続」の画面で無効にされているネットワークインターフェイスは
ありませんでしょうか?もしあれば有効にして再起動した後、AWS VPN接続を試してみてください。
もしかすると解決するかもしれません。
ありがとうございます。私も同じ点を疑いましたが、Docker/k8sのネットワークインターフェイスがごちゃごちゃありまして逃げておりました(笑)。差し支えなければなのですが、AWS ClientVPNのWindows10の際のネットワークインターフェイスの名称やプロパティの特徴等を教えていただけましたら幸いです。
プロパティを開いたときに表示される情報ですが、接続の方法=TAP-Windows Adapter V9です。それ以外何をお伝えしたらいいのかわかりません。ネットワークにあまり詳しくないので申し訳ありません。また必要な情報があればおっしゃってください。
複数ネットワークがある際、見慣れたものや、よく知らないものなどが混ざって表示されることもあると思います。
接続の方法=TAP-Windows Adapter V9
がわかればで十分だと思います。
お返事ありがとうございました。