AWS ClientVPN証明書をAmazonLinux2で発行するためのIAM設定手順

SSL-VPN(AWS Client VPN) の証明書発行を踏み台専用に用意したEC2 AmazonLinux2で行いました。OpenVPN Easy-RSAでルート証明書とサーバー証明書とクライアント証明書をEC2の中で発行したあと、aws‐cliのコマンド操作でACMにサーバー証明書とクライアント証明書をアップロードします。

この場合、EC2からACMへ証明書アップロードするためのIAMロールを設定しておかないとaws-cliコマンドでACMにアップロードできません。

そのため、EC2にIAMロールを設定する手順(ap-northeast-1 東京リージョンの場合)を記事にしました。リージョンが異なる場合は、気を付けてください。

※証明書をACMにアップロードすると、ACMに証明書作成日時のタイムスタンプもアップロードされます。そのため、事前にEC2のタイムゾーンをAsia/Tokyoにしておくとわかりやすくていいです。AmazonLinux2を最初に構築した際にタイムゾーン設定をするようにするべきですね。

EC2からACMへのフルアクセスのIAMロールを作る

フルアクセスじゃないほうがいいですが、面倒なのでフルアクセスにしました。

  1. IAMロールへ進み、ロールの作成へ
  2. ロールを割り当てるサービスでEC2を選び次へ
  3. ポリシーは、AWSCertificateManagerFullAccess(検索でCertificateで出てくる)を選び次へ
  4. タグは 例えば、iam-role-ec2-acm-fullaccess とした。次へ
  5. ロール名 ec2-acm-fullaccess ロールの説明も同じく ec2-acm-fullaccess 次へ
  6. ロールの作成 をクリック

※ロール名はプロジェクトの命名ルールなど、お好きなように名前を付けられます。

ロールをEC2にアタッチ

  1. EC2ダッシュボードのインスタンスへ
  2. 該当のEC2インスタンスを選ぶ
  3. アクション「インスタンスの設定」
  4. IAMロールの割り当て/置換
  5. ロール名 ec2-acm-fullaccess を選ぶ
  6. 適用

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となります。

  1. EC2インスタンスにSSH接続
  2. OpenVPN/easy-rsaをgit cloneするため、gitをEC2インスタンスにインストール
  3. 認証 – 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とinternlの2つ同時使いになりますので、予算に元から組み込む必要があります。さらにClientVPNのENIは、WEBサーバのEC2インスタンスと同じサブネットにする必要があります。このあたりは、別記事できちんと書こうと思います。

AWS ClientVPN接続がWindows10 Proで接続出来ない

Windows10 ProにAWS ClientVPNをインストールしてovpnファイルを設定して「接続」にしても・・・、

「接続に失敗しました。もう一度お試しください。」

「vpnプロセスの開始に失敗しました。ポートは別のプロセスですでに使用されています。」

などの現象が起きます。Windows Deffender でしょうか。まだ、原因追求中です。

OpenVPNを使うとうまくいきますので、めんどくさいのでこの問題からは逃げましたw

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください