3日目です。
昨日結局やりきれなかったので、再度「ALB経由でPrivateSubnetのEC2へインターネットからHTTPS接続する」をTryしてみます。
・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.crt と private.key をAWS Certificate Manager (ACM) の「証明書をインポート」機能にて登録します。
-
証明書本文:
server.crtの内容を貼り付け。 -
プライベートキー:
private.keyの内容を貼り付け。

ALBリスナーの設定(HTTPSの有効化)
次に、ALBが443番ポート(HTTPS)で待ち受けをするように設定します。
-
EC2コンソールの左メニューから「ロードバランサー」を選択し、作成したALBにチェックを入れます。
-
下部の「リスナー」タブを選択し、「リスナーの追加」をクリックします。
-
プロトコル:ポート:
HTTPS:443を指定します。
※HTTP:80は削除しました。 -
ルーティングアクション: 「ターゲットグループに転送」を選択し、CloudFormation等であらかじめ作成しておいた(EC2が紐付いている)ターゲットグループを選択します。
-
セキュアリスナーの設定(証明書): * 「ACMから」を選択。
-
先ほどインポートした自己署名証明書を選択します。
-
-
「追加」ボタンを押して保存します。
セキュリティグループの最終確認
ここが漏れると接続できません。以下の設定になっているか再確認してください。
-
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にて作成してたのが主な要因でした。
やっとのことでブラウザアクセスできました。

ふう。疲れた。。。。
