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

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

2186閲覧

EC2にドメイン, SSLが適用されない

jiro-sima

総合スコア20

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

2クリップ

投稿2019/12/04 22:04

編集2019/12/07 17:22

Route53で取得したドメインをEC2のインスタンスにhttpsで適用したいのですがターゲットグループにて
「これらのいずれのアベイラビリティーゾーンにも、正常なターゲットは含まれていません。リクエストはすべてのターゲットにルーティング中です。」と表示されます
セキュリティグループを一時的に全てのtcpに対して解放し、EC2はhttpに、ELBはhttpとhttpsに対してポートが解放されていることがnmapで確認できましたが依然上記のエラーが発生しています

よって原因はポートの解放状況以外にあると仮定して私の思い当たる事項として以下を確認しました
1.EC2のアベイラビリティーゾーンがap-northeast-1aである
2.ロードバランサーがアベイラビリティーゾーンap-northeast-1a, 及びEC2インスタンスが使用するサブネットを指定している
3.Route53のレコードセットのタイプ「A-IP4 アドレス」のエイリアス先にELBのIDが指定されている
4.Certificate Managerの証明書が状況:発行済み, 使用中?:はい, 検証状態:成功である
5.ロードバランサーのリスナーに
リスナーID HTTPS:443, SSL証明書 デフォルト証明書、ルール ターゲット:作成したターゲットグループ
が設定されている

なお、何かしら設定を変更した際はターゲットグループのインスタンスを登録解除し、再度登録しています

他に思い当たることがあれば些細なことでも構いませんのでご指摘ください

追記

回答頂く中で理解が進んだこと、依然解決していないことなど状況が変わってきたので全体を修正しました/2019/12/08

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takumiboo

2019/12/05 02:21

「firewall-cmd --zone=public --add-port=443/tcp --permanent」のあとに「firewall-cmd --reload」は実行しましたか?
yu_1985

2019/12/05 03:25

> EC2にhttpsを適用したのですが ここをどう設定したのか追記してみてください。 サーバの中の設定起因のような気がします。 また、ELB_ID、EC2_IDという表記はELBとEC2そのもののIDなのかセキュリティグループのIDなのか紛らわしい(これだけ見たら前者に見える)ので表記を変えましょう。 ELBにIDと呼べるものはない(ARNはあります。)が、一応。 > セキュリティグループは自身のIDが設定されていなければならないという情報 このページに書いてあることは断片的すぎますね…。 恐らく、EC2に設定してあるセキュリティグループがELBからの通信を弾いてしまってたんではないでしょうか。 なので、ELBに設定してあるセキュリティグループをEC2側のセキュリティグループで通信を許可するのもいいですし、ELBが存在するサブネットからの通信自体を許可してしまってもいいかなと。 いずれにせよELB→EC2の通信が可能なような設定になってればOKです。 分かりづらいですが、ヘルスチェックをしているので当然です。
jiro-sima

2019/12/05 12:27

> yu_1985さん 回答ありがとうございます ご指摘頂いた通りIDについて修正しました EC2のセキュリティグループについて見直し、ELBのセキュリティグループのID に対して開かれているのを確認し、更にサブネットのIDについても同様に登録しましたが やはり変わりありませんでした
jiro-sima

2019/12/05 12:35

> Takumibooさん 回答ありがとうございます reloadコマンドについてですが確証が無かった為再度解放からやり直しました するとfirewall-cmd --zone=public --add-port=443/tcp --permanentに対しては ALREADY_ENABLED: 443:tcp となり、既に解放されているようです なお、linuxは一旦切断した後、再度接続して確認しました しかしnmapで調べたところやはり443はclosedとなっています
Takumiboo

2019/12/05 12:45

「firewall-cmd --reload」は実行したということでいいのですか?一度切断したところで再起動されたわけではないので、「firewall-cmd --reload」するまでは反映されませんが。
jiro-sima

2019/12/05 16:06

>Takumibooさん はい、確認しました
guest

回答2

0

よくよく考えたらあまり意味のない質問をしていたことに気が付きました。

まず、ELB配下にEC2インスタンスを配置してHTTPS化したい場合、EC2インスタンスにHTTPSで通信ができる必要はありません。

なぜなら、ELBにACMで発行した証明書を設定するとELB上でSSLが終端されるからです。
ELBはそのリクエストを配下のEC2インスタンスに振り分けますが、配下のEC2インスタンスのどのポートに振り分けるかはターゲットグループで設定します(CLBの場合はLBの設定で)
もちろんELBでHTTPSの通信を受けて、それをEC2インスタンスの443番ポートに転送することもできるのですが、ELB→EC2の通信を暗号化する明確な目的がない限りは普通に80番ポートに転送すれば十分でしょう。

上記を踏まえて確認したいのですが、ターゲットグループの設定はどうしていますか?
デフォルトだとターゲットグループは80番ポートに転送するようになっていますが、ELB→EC2の80番ポートの通信が許可されていないように思えます。
(分かりづらいですが、明示的に内部ネットワークでの接続を許可しないと恐らくうまく行かないと思います。)
ただ、修正すべきはターゲットグループの設定ではなく、セキュリティグループでELBのセキュリティグループからの通信を443ではなく80を許可するように設定することかと思います。
EC2で443ポートを受ける必要はありません

またもう一つ。
一応質問の回答としてはこちらになりますかね。
上記の通りELBを使ってHTTPS化するなら特に必要はないのですが、EC2インスタンスの443ポートが開いてないのはそもそもEC2インスタンス上で443ポートを受けるような設定を入れてないのでは、という気がします。
WEBサーバとして使っているのはApacheやらnginxやらだと思いますけど、そこで証明書を設定して443ポートを受け付ける設定をしていないと443ポートが開いてないのは当然です。

投稿2019/12/05 13:13

yu_1985

総合スコア7447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiro-sima

2019/12/05 16:21

EC2インスタンスのセキュリティグループにポート:80, ソース:ELBのセキュリティグループのIDを新しく設定しました Apacheに証明書を登録し、netstat -ltupnコマンドで確認したところ、 Local Addressの:::80, :::443両方のステータスがLISTENであることを確認できました しかし依然エラーが発生しています
yu_1985

2019/12/05 16:27 編集

エラーとは何をしたときにどんな内容のものが出るんでしょうか。 また、証明書を登録と言っていますがどういう証明書をApacheにどのように設定しましたか。 情報が足りません。 そしてそもそもの話ですが、既に述べたように、ELBを使うのであればACMで証明書を発行してELBでSSL終端する方法を用いたほうが楽ですし、多くの場合それで十分かと思います。 EC2でSSL終端をさせなければいけない明確な理由があれば話は別ですが。
jiro-sima

2019/12/05 16:43

先ずエラーについてですが WC2 > ロードバランシング > ターゲットグループ > ターゲットに 「これらのいずれのアベイラビリティーゾーンにも、正常なターゲットは含まれていません。リクエストはすべてのターゲットにルーティング中です。」と常に表示されています 証明書はRoute53で取得したドメインについてCertificate Manager(ACM)でリクエストし、取得したものです Apacheへの証明書登録の手順は主にhttps://qiita.com/clown0082/items/551d7c081ff6b41b1717 を参考にし、『Apacheの設定』の箇所がよく分からなかったので https://qiita.com/jinnai73/items/638dcc1434d47b12e6baの 『秘密鍵とサーバ証明書の配置』と『SSLモジュールの設定』で代用しました EC2をSSL終端とすること関してはご指摘の通り特段の理由はありません (要はhttpsでアクセス出来ればいいので) なのでELBで出来れば良かったのですがエラーが出たのでlinuxで調べている過程で勘違いを していたという次第です
yu_1985

2019/12/05 17:41

ヘルスチェックに失敗したインスタンスは一度グループから外して再度戻さないと復活しません。 やり直してみてください。 ターゲットグループで指定しているポートが80であることも合わせて確認してください。 また、くどいようですがACMで証明書を発行してELBに関連付けているのであればEC2で証明書を設定する必要は特にありません。(自己署名証明書を使ってまでわざわざELB→EC2の経路を暗号化する意味もないでしょう) 普通に80番ポートにアクセスできれば十分です。 ELBを経由してアクセスできることが確認できたら、EC2のセキュリティグループの443、80のインバウンドはもっと絞りましょう。(ロードバランサーを使っているのにロードバランサー以外のところから必要以上にアクセス可能なのは好ましくありません)
jiro-sima

2019/12/05 20:39

重ねてお手間をかけて恐縮ですが気になる挙動があったのでお尋ねします ロードバランサー > 説明 の「DNS名」(Aレコードと書かれているものです)にアクセスした際、 リスナーのプロトコルがhttpであった場合はApacheのテストページが表示されるのに対し、 httpsだとアクセス出来ません これはELB - EC2間のアクセス許可以前にSSL設定に問題があることを意味するでしょうか?
jiro-sima

2019/12/05 21:03

追記:ELBのセキュリティグループはhttp, https共に許可しています
yu_1985

2019/12/06 02:33

> 追記:ELBのセキュリティグループはhttp, https共に許可しています ということは記載と違う設定をしているということでしょうか? 「アクセス出来ない」とはどういう状態でしょうか。 タイムアウトになるのか、エラーが出るのか。 現象を正確に記載してください。 リスナーと転送ルールの設定は正しいですか? 設定内容を追記してください。
jiro-sima

2019/12/06 18:47

失礼しました 改めて現在の設定を記述します EC2インスタンスのセキュリティはhttpにおいて0.0.0.0/0, 全てのサブネットIP, VPCIPを許可しています ELBのセキュリティはhttpとhttpsにおいてそれぞれ0.0.0.0/0を許可しています エラーについては「"DNS名" で接続が拒否されました。」と表示されます ロードバランサーのリスナーにhttp(ポート80)が含まれていればApacheのテストページが表示されます あと試しにtcpの全てのポートを許可したセキュリティを両方に適用してみたのですがやはり変わりありませんでした
guest

0

自己解決

質問文に記した方法で確認するうち成功してしまいました
つまりどれかがマズかったのでしょうが...
釈然としませんが解決済みとさせて頂きます
回答頂いた方々に感謝します

投稿2019/12/08 01:20

jiro-sima

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問