新ネットワークスペシャリスト道

ネットワーク、セキュリティ、何の話?

【AWS 100日チャレンジ - 3日目】 テーマ「ALB経由でPrivateSubnetのEC2へインターネットからHTTPS接続する」続き

3日目です。

昨日結局やりきれなかったので、再度「ALB経由でPrivateSubnetのEC2へインターネットからHTTPS接続する」をTryしてみます。

 

AWS 100日チャレンジの記事を書く上でのルール

・100日続ける(休日まとめ投稿もあり)

・記事を読んでもらうことを目的とはしない(すいません、継続することを重視します。自己満です)

・社会人のため、風邪および業務によりキャンセルすることもある。

・核となるサービス以外は、CloudFormation(VPCやサブネット、EC2など)やすでに設定済のサービス(SNSなど)を利用して構築する。

課題

「ALBを経由してPrivateSubnetに所属しているEC2へインタネットからHTTPS接続できるようにする」続き

デジタル証明書はオレオレ証明書を使用する

実施 (キャプチャのみの場合もあり)

大まかな手順は、「証明書の準備」「AWSリソースの設定」「接続確認」

まずは、「証明書の準備」から。

 

OpenSSLでオレオレ証明書を作成

1. windowsでopensslを使用できるように以下よりダウンロードしてインストール

https://slproweb.com/products/Win32OpenSSL.html

2. 環境変数設定

set PATH=%PATH%;C:\Program Files\OpenSSL-Win64\bin

3. 秘密鍵(Private Key)の作成

openssl genrsa -out private.key 2048

4. 証明書署名要求(CSR)の作成

openssl req -new -key private.key -out server.csr

質問には適当に入力する。

  • Country Name: JP

  • State or Province Name: Osaka

  • Locality Name: Osaka

  • Organization Name: Test Inc

  • Common Name (重要): shigashiga.com(適当なドメイン名でOK。ALBにアクセスする際の名前になります)

    ※ ドメイン名をexample.comにするとACMの証明書インポートでドメイン名が空になるのでexample.comを使用しなほうがいい

  • Email Address / Extra attributes: すべて空欄(エンター連打)でOKです。

5. 自己署名証明書(CRT)の発行

openssl x509 -req -days 365 -in server.csr -signkey private.key -out server.crt

カレントフォルダ内に server.crt が作成されている。これがオレオレ証明書。

 

ここからは「AWSリソースの設定」

 

ACMへオレオレ証明書をインポート

作成した server.crtprivate.key をAWS Certificate Manager (ACM) の「証明書をインポート」機能にて登録します。

  • 証明書本文: server.crt の内容を貼り付け。

  • プライベートキー: private.key の内容を貼り付け。

ALBリスナーの設定(HTTPSの有効化)

次に、ALBが443番ポート(HTTPS)で待ち受けをするように設定します。

  1. EC2コンソールの左メニューから「ロードバランサー」を選択し、作成したALBにチェックを入れます。

  2. 下部の「リスナー」タブを選択し、「リスナーの追加」をクリックします。

  3. プロトコル:ポート: HTTPS : 443 を指定します。
    ※HTTP:80は削除しました。

  4. ルーティングアクション: 「ターゲットグループに転送」を選択し、CloudFormation等であらかじめ作成しておいた(EC2が紐付いている)ターゲットグループを選択します。

  5. セキュアリスナーの設定(証明書): * 「ACMから」を選択。

    • 先ほどインポートした自己署名証明書を選択します。

  6. 「追加」ボタンを押して保存します。

セキュリティグループの最終確認

ここが漏れると接続できません。以下の設定になっているか再確認してください。

  • ALBのセキュリティグループ:

    • インバウンドルールに HTTPS (443) / ソース 0.0.0.0/0(または自分のIP)が許可されていること。

  • EC2のセキュリティグループ:

    • インバウンドルールに HTTP (80) / ソース ALBのセキュリティグループID が許可されていること。

 

ローカル端末PCのhostsファイルを編集する

ALBのグローバルIPアドレスをnslookupで取得する。2種類あるけどどちらでもOK。

Addresses:  35.73.200.3
              54.250.121.114

hostsファイルに設定する(DNSを使用しない)

 

ここまでで全然つながらない。

geminiに相談しまくりました。

 

いろいろ躓きまくったのですが、

ALBをprivatesubnetにて作成してたのが主な要因でした。

やっとのことでブラウザアクセスできました。

 

ふう。疲れた。。。。