質問: AWSにサーバーを立ててHPを公開しようとしています。 httpでは表示することが出来たのですが、AWS上でhttpsの設定をしても、ブラウザで保護されていない通信と表示されます。 以下のサイトを参考にしながら設定を行いました。 ドメインも新規取得しました。 https://recipe.kc-cloud.jp/archives/11084 ブラウザ(Chrome)の証明書情報の状態は「この証明書には問題ありません」(保護されていない通信クリック → 署名書 → 証明のパス)と出ていますが、他に設定すべき箇所はありますでしょうか。 上記サイトではnginxをインストールするよう書かれていますが、元々Apacheが起動しているため?sudo service nginx startでFAILEDが出ました。 元々インスタンスは作成されていたため、この作業をしなくてもhttp表示は出来ましたがhttpsにするためには必要なのでしょうか。 ■気になる点 ロードバランサーのターゲットの登録で80番ポートでは「このターゲットは、現在ターゲットグループのヘルスチェックに合格しています。」と出ますが、443ポートでは「Health checks failed with these codes: [502]」と出ます。 色々検索してヘルスチェックのパスを/index.htmlにしてルートディレクトリに置きましたが、逆に80番ポートもエラーが出たため、元(/)に戻しています。 セキュリティグループはssh:22とhttp:80とhttps:443を許可しています。 コマンドラインでdig 取得ドメイン A とするとANSWER SECTIONでAレコードが二つ出てくる状態です。 初心者で申し訳ございませんがご教示の程よろしくお願いいたします。 --- 2020/1/24 編集 リスナー設定 ![リスナー設定](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/222d3c225c977ce8640c98f1a8575f2e.png) ターゲットグループ(説明) ![ターゲットグループ(説明)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/dd21e0e50910e83d24ab7eeec9d461e2.png) ターゲットグループ(ターゲット) ![ターゲットグループ(ターゲット)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b81aa4758192e1e6751a8cfabdadadd9.png) ターゲットグループ(ヘルスチェック) ![ターゲットグループ(ヘルスチェック)](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/e9d9f5dcb18c178be1aea5a3d1d93eed.png) ELBのセキュリティグループ ![ELBのセキュリティグループ](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/03a8189ee331da83d92896901e61eccc.png) EC2インスタンスのセキュリティグループ ![EC2インスタンスのセキュリティグループ](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/42ea92e661d9b15c3df36d63a8a49cd8.png) --- 1/24 14:23追記 ![トップ画面](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/6871fe077b3f82bebf1c33b961f414dc.png)
回答: もともとApacheを入れていたのなら、nginxをそのまま使うとポートがバッティングして起動できないと思います。 参考サイトではnginxを使っているだけでApacheでも問題はないです。 > > ロードバランサーのターゲットの登録で80番ポートでは「このターゲットは、現在ターゲットグループのヘルスチェックに合格しています。」と出ますが、443ポートでは「Health checks failed with these codes: [502]」と出ます。 > > > ALBのリスナーの80番と443番で別々のターゲットグループを設定しているんですか? ALBのリスナー設定、ターゲットグループ それとALB、EC2インスタンスそれぞれのセキュリティグループの設定を貼ってみてください。 ※追記 ターゲットグループの設定で80番ポートをちゃんと指定して、ヘルスチェックはうまく行ってますね。 ターゲットグループのほうで443ポートを指定したら失敗するのは正しい挙動ですし、ALBに証明書を設定するのであればその必要もありません。(EC2のApacheでHTTPSの設定を入れていないと思いますので) やりたいことは、ALBでHTTPSのリクエストを受けて、そのリクエストをEC2インスタンスに振り分けるということですね。 ここでのALB→EC2のリクエストの振り分けの設定がターゲットグループの設定です。なのでここを443ポートにする必要はありません。(ALB→EC2の間の通信も暗号化したいという要望があれば話は別ですが、プライベートネットワーク内の通信なので特に必要はないと思います。一応やるならこんな感じ) ALBではHTTPのリスナーを設定していないので、HTTPでアクセスしたら表示されるというのはむしろおかしな挙動ですね。 キャッシュがローカルに残ってるんでしょうかね? キャッシュを消すか、シークレットウインドウを使うとか、スーパーリロードを試すとかしてみてください。 SSL化したのにHTTPでアクセスさせるのも微妙なので、常時HTTPSになるようにしましょう。 Apacheやnginxの設定でやると地味に面倒なんですが、ありがたいことに今はALBの設定だけでできるので、下にあるEC2インスタンスはALBからのHTTPリクエストさえ受け付けられれば十分です。 > > コマンドラインでdig 取得ドメイン A とするとANSWER SECTIONでAレコードが二つ出てくる状態です。 > > > これはALBに2つのサブネットを設定しているからですね。 試しにALBのDNS名に対してdigコマンドを打ってみると同じ結果になると思います。