🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

HTTPS

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

SSL

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

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回答

1436閲覧

EC2ロードバランサ―配下でSSL接続を行えるようにしたい(https://なサイトが作りたい)

rokutimpo

総合スコア12

ドメイン

ドメインとは本来、領域や範囲の意味を持ち、インターネット上では特定の部分領域を指します。ネットワークやコンピュータの識別に利用され、所得することでホームページを公開したり、メールアドレスを作成できます。

HTTPS

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

SSL

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

Amazon EC2

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

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2020/12/02 09:33

編集2020/12/04 10:05

前提・実現したいこと

Amazon EC2のロードバランサ―配下でSSLクライアント認証を行い、ルーティングをしたい。
https://自ドメインなサイトを作りたいです。

発生している問題**<2020/12/04更新>**

この接続ではプライバシーが保護されません NET::ERR_CERT_COMMON_NAME_INVALID

なお、NET::ERR_CERT_COMMON_NAME_INVALIDの部分をクリックするとCertificateのpem3点の中身が全部見えてしまいます。

イメージ説明

試したこと

(1)
https://pages.awscloud.com/event_JAPAN_Hands-on-for-Beginners-Scalable_Contents.html

→初心者ウェビナーの通りに進めてみました。

<やったこと>
・VPCの作成
・Apacheの作成
・RDSの作成(MySQL)
・ELBの作成
・EC2インスタンスの作成(2台)
・RDSのマルチAZ配置

上記の作業を全て行った後、Elastic IPアドレスをURL欄に入力しました。

結果、ローカルでの接続が確認できました。

(2)
自分のドメインとのルーティングの設定作業を行いました。
その後、下記のURLにてWordPressの編集を試みました。

<やったこと>
・Route53の接続
・DomainのAレコード、CNAMEレコード編集
http://自ドメイン/wp-adminにて接続ができることを確認しました。
・同URLにて編集が反映されるかを確認しました。

なお、Route53の接続状況については添付画像の通りです。<2020/12/04更新>
Aレコード部分にはALBのエンドポイントのを記載しております。
イメージ説明

ご覧の通りターゲットの正常性の評価が『いいえ』となってしまっている状態です。

(3)
SSL接続を行う

<やったこと>
・Certificate ManagerでのDomainの認証作業を行いました
イメージ説明
・EC2 > ロードバランサ―にてリスナーの追加を行いました
イメージ説明
・リスナーのHTTP:80に対し、ルールの編集を行いました。<2020/12/04更新>
イメージ説明

・ELBのセキュリティグループ > インバウンドルールの編集を行い下記画像のように設定を行いました。<2020/12/4更新>
イメージ説明

補足情報(FW/ツールのバージョンなど)

Google Domainを使用しています。
LAMP環境を構築したいと思っています。

以上お分かりになる方がいらっしゃいましたらご教示いただけると嬉しいです。
宜しくお願いします。

追記(セキュリティグループを編集 / その後のcertのお返事内容)

①セキュリティグループ部分のインバウンドルールに下記内容を追加しました。
(1)
タイプ:HTTPS
プロトコル:TCP
ポート範囲:443
ソース:0.0.0.0/0

(2)
タイプ:HTTPS
プロトコル:TCP
ポート範囲:443
ソース:::/0

その結果、ロードバランサーのリスナーの443に関しては!マークが出なくなりました。

しかし、その後接続を試しましたがタイムアウトになります。
なお、ポート80 , 443に対してそれぞれcertコマンドでテストを行った結果、下記の出力が得られました。

cert -k ドメイン名:443

DomainName: ドメイン名
IP:
Issuer:
NotBefore:
NotAfter:
CommonName:
SANs: []
Error: dial tcp IPアドレス:443: i/o timeout

つながりません。。困っております。。

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

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

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

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

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

maisumakun

2020/12/02 09:40

「SSLクライアント認証」とは、(サーバ証明書ではなく)「クライアント証明書」を使ったサーバ構築を行う、ということで間違いないでしょうか?
gasbombe

2020/12/02 15:05

ターゲットグループはどうなっていますか? ターゲットになっているインスタンスのセキュリティグループはどうなっていますか?
rokutimpo

2020/12/02 15:45

maisumakunさま お世話になります。rokutimpoです。 こちらですが、申し訳ございません。。 クライアント認証ではなくサーバー認証でした。 正しくは『サーバー証明書』を使ったサーバー構築です。
rokutimpo

2020/12/02 15:56

gasbombeさま お世話になります。 先ほど投稿した段階から少し変更を加えまして、下記状態になっております。 ■ターゲットグループ: (1)EC2インスタンス1台目:起動中 <ポート>80 <アベイラビリティゾーン>ap-northeast-1a <状態> healthy <説明>このターゲットは、現在ターゲットグループのヘルスチェックに合格しています。 (2)EC2インスタンス2台目:停止中(課金したくないので停止しております) <ポート>80 <アベイラビリティゾーン>ap-northeast-1c <状態> unused <説明>Target is in the stopped state ■セキュリティグループ インバウンドのルールに関してですが、以下の通りで記載しております。 (1) <タイプ>HTTP <プロトコル>TCP <ポート範囲>80 <ソース>0.0.0.0/0 (2) <タイプ>HTTP <プロトコル>TCP <ポート範囲>80 <ソース>::/0 (3) <タイプ>HTTPS <プロトコル>TCP <ポート範囲>443 <ソース>0.0.0.0/0 (4) <タイプ>HTTPS <プロトコル>TCP <ポート範囲>443 <ソース>::/0 この段階で、ロードバランサー部分のエラーは出なくなったのですがhttpsで接続を試みるとタイムアウトとなり接続ができない状態です。
yu_1985

2020/12/03 06:45

80番ポートはそもそも証明書を使用していないので、certコマンドでリクエスト投げても意味ないと思います。 記載されているのはALBのセキュリティグループなのか、配下のEC2インスタンスなのか、パッと見ではわからないので明確にわかるよう記載してください。 念の為ですが、 > http接続は無事できました。編集もできました。 ここで何をやったかをもっと具体的に記載してください。 http接続は、どのアドレスに対して成功したのでしょうか。 また、「編集もできました」とは何をどう編集したのでしょうか。 文面からはhttpで接続を確認した後にレコードを変更したように見えますが…。 具体的には、DNSの設定内容を貼ってくれるとわかりやすいです。(IPや実際のドメイン名は隠してください)
rokutimpo

2020/12/03 09:48 編集

yu_1985さま お世話になります。 なるほど、了解しました。 下記インラインでお返事させてください。 ★80番ポートはそもそも証明書を使用していないので、certコマンドでリクエスト投げても意味ないと思います。 ⇨ >やるべきはdigとかnslookupの方だったっぽいですね、、 >勉強不足でした、失礼しました。 ★記載されているのはALBのセキュリティグループなのか、配下のEC2インスタンスなのか、パッと見ではわからないので明確にわかるよう記載してください。 ⇨ 失礼いたしました。 こちらはELBのセキュリティグループの部分の話となります。 teratailの投稿本体に画像を追加しましたので、ご覧になっていただけると幸いです>< ★念の為ですが、 http接続は無事できました。編集もできました。 ここで何をやったかをもっと具体的に記載してください。 http接続は、どのアドレスに対して成功したのでしょうか。 また、「編集もできました」とは何をどう編集したのでしょうか。 >こちらに関しては、Route53を用いてhttpのルーティングの設定を行い、 >A / CNAME / NS / SOA の各種レコード設定を行った後に、 >下記URLからWordPressへのログインを行い、編集が反映されるかを確認しました。 >http://自ドメイン/wp-admin >その結果、新規でページの追加、プラグインの導入、プラグインの導入によってのDBの中に新しいカラムが>生成されることの確認ができました。 ★文面からはhttpで接続を確認した後にレコードを変更したように見えますが…。 ⇨ >その通りです。編集できることが確認できたため、次はhttpsで接続できるようにしよう、と >レコードの編集を行いました。 ★具体的には、DNSの設定内容を貼ってくれるとわかりやすいです。(IPや実際のドメイン名は隠してください) ⇨ >DNSの設定に関して、teratailの投稿本体に画像を追加いたしました。 >ご教示のほど、どうかよろしくお願いいたします。
yu_1985

2020/12/03 21:00 編集

DNSの設定がないですね…。 気にしているのは、ALBを使用しているならCNAMEレコードが登場する必要は特にないはず、というところで、タイムアウトしてしまうことからもDNSの設定内容が誤っているのでは、と思っています。 「接続」を行った時点でドメインはどのIPを返していたのか、現在のレコード設定が正しいのか、そのへんを知りたいのでDNSの設定内容を貼っていただけると。 ※追記 ちなみに、Certificate Managerのほうでは正常に証明書が発行できていて、検証も完了していますか?
rokutimpo

2020/12/03 15:26

yu_1985さま お世話になります。 DNSの設定、大変失礼しました。。 投稿の本体に画像をアップロードいたしましたので、ご確認いただけるととても嬉しいです>< おっしゃる通りで、AレコードにElastic IPの番号を記載しています。 こちら、消した方が良いか自信が現状持てていないのですが、消してしまっても大丈夫でしょうか? ※追記 ちなみに、Certificate Managerのほうでは正常に証明書が発行できていて、検証も完了していますか? >Certificate Managerに関してですが、こちらも画像にて添付致しましたので、見ていただけると嬉しいです!
yu_1985

2020/12/03 20:50

消すと言うより、直さないといけません。回答に記載します。
guest

回答2

0

ベストアンサー

DNSの設定が誤っているのが原因です。

見たいところまで黒く塗られていて正確には読み取れませんが、おそらくAレコードにインスタンスのEIP、CNAMEはCertificate Managerのドメイン検証ようのレコード、というふうに読み取ります。

現状はALBを経由してアクセスしたいにもかかわらず、AレコードでEC2インスタンスのIPを指定していて、ALBのエンドポイントを指定していない状態です。
つまり、ドメインを指定してアクセスするとALBを見に行かずに、EC2インスタンスを直接見に行ってしまっている状態です。
なのでALBでいくらHTTPSの設定をしてもALBを見ていないのでうまく行かない、ということです。
EC2インスタンスの側ではHTTPSでlistenする設定をしていないと思いますので、HTTPSでアクセスできないのはそのためでしょう。

解決策はAレコードの修正です。
もしDNSがRoute53でなく他のところだったならばCNAMEレコードでALBのエンドポイントを指定しなければいけなかったのですが、Route53を使っているならAレコードでエイリアスレコードとしてALBのエンドポイントを指定することができます。
なので、今回使用するALBのエンドポイントをAレコードにエイリアスレコードで登録してください。

ALBを使ったHTTPS化についてはまさに↓の記事がそのままのことをやっています。
Route53のコンソールが最近新しくなったのでスクリーンショットとはちょっと違いますが…。
【初心者向け】AWSのサービスを使ってWebサーバーをHTTPS化する
今のセキュリティグループ設定なら多分うまくいくと思いますが、ALB→EC2の通信を許可していなくてヘルスチェックに失敗するとかもよくあることなので注意してください。
ALB経由での接続が確認できたら、EC2インスタンスの方は80番ポートへの接続をALBのセキュリティグループからに絞るといいでしょう。

さらに、ALBのリスナー設定をちょっといじるだけで常時HTTPS化もできます。
[新機能]Webサーバでの実装不要!ALBだけでリダイレクト出来るようになりました!
(ALBを使っているにも関わらずApacheやnginxの設定でやらせようとする記事がそれなりに出てきますが、無視してください)

投稿2020/12/03 21:02

yu_1985

総合スコア7588

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

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

rokutimpo

2020/12/04 10:08

yu_1985さま お世話になります。 いつもとてもご丁寧にお返事いただき、本当に有り難うございます。 上記お返事を参考に下記を行いました。 ・リスナーのルールを編集 ・EC2 > セキュリティグループ > インバウンドルール のHTTPのルールをセキュリティグループからプルダウンでALBに変更 上記を行った結果なのですが、投稿本文の状態になってしまうようになりました。 ・https://で接続をしようとはしてくれる。 ・CSSが一切反映されていないページが表示されたのち、本文添付画像のようになってしまう。 ターゲット正常性の評価がいいえとなってしまう点が問題だとは思うのですが、どうおかしいのかがわからずに苦戦しております。。
yu_1985

2020/12/04 11:10 編集

証明書のドメインとALBのエンドポイントのドメインが異なるせいです。 前述の通りレコードを修正して、ドメインを指定した時にALBを参照するようにしてください。 今回の問題の最大の原因はレコードの設定なのでそこを直さなければ解決しません。
rokutimpo

2020/12/04 15:40

yu_1985さま お世話になります。 理解力が低く申し訳ないのですが、以下ご教示いただけませんか? ★前述の通りレコードを修正して、ドメインを指定した時にALBを参照するようにしてください。 > ドメインを指定した時にALBを参照させる方法なのですが、下記でお間違いございませんか? ⇨ EC2 > ロードバランサー > インバウンドのルール > HTTP:80 > 右側のルールの編集 > +ボタン ▼IF : パスが 『 * 』の時に ▼THEN : https://#{host}:443/#{path}?#{query} にリダイレクト ★今回の問題の最大の原因はレコードの設定なのでそこを直さなければ解決しません。 > レコードの設定についてですがこちらはRoute53のAレコードを下記に編集でお間違いございませんか? ⇨ (修正前)Elastic IPアドレスを記載 (修正後)ALBのエンドポイントを記載 ★ドメイン側(私はGoogle Domainsを使用しています)にAレコードの追加等を行わなければならないのでしょうか? 以上3点、困っております。 どうかお助けいただけると幸いです><
yu_1985

2020/12/05 05:37

出先だったのであまり画像を確認してなかったんですが、Route53の設定は今貼られてるもの合ってそうですね。 その状態のままドメインでアクセスしてみてください。 貼ってある画像ではALBのエンドポイントでアクセスしてますけど、それだと証明書とドメインが異なるので画像のようなエラーになります。 質問に関しては下記のように回答します。 > EC2 > ロードバランサー > インバウンドのルール > HTTP:80 > 右側のルールの編集 > +ボタン ▼IF : パスが 『 * 』の時に ▼THEN : https://#{host}:443/#{path}?#{query} にリダイレクト これはALBを参照する云々ではなくて、ALBが80番ポートに受けたリクエストを443ポートに転送する設定(つまり常時HTTPS化)の設定です。 これはこれでやるべき設定ですが今回言及しているのはここではありません。 > レコードの設定についてですがこちらはRoute53のAレコードを下記に編集でお間違いございませんか? そうです。 ただ、エンドポイントをAレコードにそのまま記載することはできない(本来はIPのみ)で、エイリアスレコードを登録してください。 Route53のコンソールからできるはずです。 これがRoute53でないDNSだとCNAMEで登録しなければいけません(前述の通り、AレコードにはIPしか登録できないため) > ★ドメイン側(私はGoogle Domainsを使用しています)にAレコードの追加等を行わなければならないのでしょうか? DNSの機能をRoute53に任せているのであれば必要ありません。 ちなみに > ターゲットの正常性の評価が『いいえ』となってしまっている これは指定した対象にリクエストが通るかをRoute53が確認するかどうかなのでいいえで問題ありません。
guest

0

ウェビナーにはHTTPSでのロードバランシングの設定方法は無かったという理解でいいですか?

HTTPSは、通常であればクライアントとサーバの間の暗号化通信であるため、中間にあるロードバランサ―はその内容を読み取ることができません。なので、単純にHTTPと同じようには設定できないはずです。
設定方法は、以下のドキュメントを参照してください。
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-https-listener.html

投稿2020/12/02 14:45

gasbombe

総合スコア204

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

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

gasbombe

2020/12/02 14:55

すみません、質問の意図を読み間違えていました。こちらは無視してください。
rokutimpo

2020/12/02 16:04

gasbombeさま お世話になります。 すみません、こちら読み落としておりました。。 httpsでのロードバランシングに関しては設定方法のウェビナーはなかったため、困ってしまったという次第でございます。 リファレンス、ぜひ参考にさせていただきます。 ありがとうございます><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問