質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.07%

AWS https化不可

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 454

starsecond

score 11

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 編集

リスナー設定
リスナー設定

ターゲットグループ(説明)
ターゲットグループ(説明)

ターゲットグループ(ターゲット)
ターゲットグループ(ターゲット)

ターゲットグループ(ヘルスチェック)
ターゲットグループ(ヘルスチェック)

ELBのセキュリティグループ
ELBのセキュリティグループ

EC2インスタンスのセキュリティグループ
EC2インスタンスのセキュリティグループ


1/24 14:23追記

トップ画面

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

もともと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コマンドを打ってみると同じ結果になると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/24 14:28

    画像を再度一つ貼り付けました。
    画像の詳細設定から「ドメイン名 にアクセスする(安全ではありません)」をクリックすると一応ページは開けますが、URL左部分に「🔺保護されていない通信」と出てhttpsに赤二重線が付いています。

    キャンセル

  • 2020/01/24 16:12

    証明書のドメインとアクセスしてるドメインは一致してますか?
    また、443のリスナーにちゃんと想定した証明書が設定できていますか?

    あとは一旦こちらを確認して該当するケースがないか確認してみてください。
    https://aws.amazon.com/jp/premiumsupport/knowledge-center/acm-certificate-error-https/

    参考サイトは説明がざっくりしすぎているので、個々の手順は他のところを見たほうがいいかもしれません。
    ACMでの証明書発行
    https://www.ginzaitlab.com/posts/7330861/

    特に理由がなければ証明書はワイルドカードで発行すると楽です。
    有料の証明書の場合ワイルドカードだと高くなったりしますが、無料なので。

    キャンセル

  • 2020/01/24 17:30

    出来ました!!!
    参考URLを見てドメインをワイルドカードで指定してなかったので一旦証明書を消して、ドメイン+ワイルドカード追加でいとも簡単に・・・・
    ありがとうございましたm(_ _)m

    キャンセル

+1

ブラウザで保護されていない通信と表示されます。

「このサイトへの接続は完全には保護されていません」
だったら、mixed contents じゃないですかね?

使用しているリソースへの参照を全てhttpsにしてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 18:56

    「完全に」とは出ていないです。
    「このサイトへの接続は保護されていません」と赤い△で表示されています。
    mixe contents じっくり読んでみます。

    キャンセル

  • 2020/01/24 11:22

    mixed contents(HTTP通信で取得するコンテンツが混じっている)です。

    キャンセル

  • 2020/01/24 12:11

    ご指摘ありがとうございます。
    queryはmixだし文言はmixeだしダメダメだったのを修正しておきました。

    キャンセル

  • 2020/01/24 14:22

    https://feel-log.net/seo/ssl-notice-http-https/ を参考にしながらF12で確認しましたがコンソールの中にmixed contentsはありませんでした。
    その他のPHPページではhttpがありましたので全て消しました。(ページ移動は相対パスで指定)
    そのあとキャッシュクリアをして再読み込みしましたが変化はありませんでした。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.07%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る