AWS Application Load BalancerでHTTPをHTTPSにリダイレクトするにはどうすればよいですか?


12

私たちのウェブサイトはHIPAAに準拠する必要があるため、すべてを暗号化する必要があります。「私は、彼らがに入れたときに、クライアントは、エラーメッセージを取得する必要はありませんHTTP私はHTTPSにHTTPとHTTPS、およびHTTPリダイレクトの両方をサポートする必要があるので、://mysite.com」。私は正しいですか?

私はウェブサーバーでそれを正しく行いました。したがって、Webサーバーに直接接続すると、HTTPは自動的にHTTPSにリダイレクトされます。すべて良い。

しかし、WebサーバーはAWS Application Load Balancerの背後にあります。ELBでHTTPをHTTPSにリダイレクトする方法がわかりません。そのため、クライアントブラウザーは引き続きHTTP経由でELBに接続できます。

AWS Application Load BalancerでHTTP => HTTPSを設定するにはどうすればよいですか?

つまり、ELBとWebサーバー間の接続がHTTPSであることは確かですが、クライアントブラウザーとELB間の接続がHTTPSであることを確認するにはどうすればよいですか。


あなたはLBでそれをしません。X-Forwarded-ProtoLBが送信するヘッダーに基づいて、インスタンスでそれを行います。
ceejayoz 2017

私はサーバーの担当者ではありません-私はC#プログラマーですので、馬鹿げたことを言い訳してください-WindowsサーバーでリダイレクトをセットアップするためにURL書き換えモジュールを使用しました。サーバーに直接接続すると機能します。しかし、ELBに接続しても、HTTPで接続できます。どうして?
Silly Dude 2017

ALBはSSL証明書を使用して443をリッスンしていますか?あなたの質問を確実にするために、ALBとサーバー間のSSLも必要ですか?
strongjz 2017

回答:


-4

以下にリストされている構成を.htaccessファイルに追加できます。ただしその前に、サーバーでmod_rewriteが有効になっており、.htaccessファイルが拒否されていないことを確認してください。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule . https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

詳細な説明については、awsエンドの公式ドキュメントをご覧ください。 https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/


7
この回答には、Apache HTTPサーバー
Paul Draper

2
OPはELBの構成方法を尋ねるので、Apacheの構成方法を説明しますか?彼らは明示的にリダイレクトを行うようにApacheを設定していると明示しました。回答を削除してください。
セリン


1

通常、ELBはhttps(ポート443)を受信し、http(ポート80)でEC2インスタンス(ロードバランサーターゲット)に転送するように設定されています。

バックエンドWebサーバーはこれらのリクエストをロードバランサーのポート443にリダイレクトし、リダイレクトの無限ループ(ロードバランサーとバックエンドWebサーバーの間)を引き起こします。

一般的なエラーメッセージはERR_TOO_MANY_REDIRECTSです。

解決策は、リダイレクトを決定するときに、ロードバランサーによって認識されるプロトコルであるX-Forwarded-Protoを確認することです。

nginxの場合、設定は次のようになります。

server {
    listen   80;
    server_name    www.example.org;   
    if ($http_x_forwarded_proto = 'http') {
         return 301 https://$server_name$request_uri;   
    }
}

そしてApache .htaccessの場合は次のようなものです:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

注:ウェブサーバーを再構成せずにこれを処理できれば便利だと思われるかもしれませんが、2018年の春以降、ELBだけを使用してこれを解決する方法はありません。つまり、これを機能させるには、ウェブサーバーを構成する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.