web-dev-qa-db-ja.com

Application Load Balancer(ELBv2)SSLパススルー

EC2ウェブサーバーにトラフィックを分散するために、AWS Application Load Balancer(クラシックロードバランサー対)を設定しようとしています。コンプライアンス上の理由から、アプリケーションにはエンドツーエンドのSSL/HTTPS暗号化が必要です。

クライアントとWebサーバーの間でトラフィックを確実に暗号化する最も簡単な方法は、WebサーバーでHTTPS接続を終了することです。

私の最初の質問:この方法でHTTPSトラフィックをAWS Application Load Balancerを介してロードバランサーの背後にあるウェブサーバーに渡すことは可能ですか?

AWSのドキュメントから収集したものから、Classic Load Balancerを使用して、この方法でトラフィックを通過させることができます(TCP pass through)。ただし、Application Load Balancerは次のようになります。 HTTPS接続自体を終了してから、次のいずれかを実行します。

  • 暗号化されていないWebサーバーにトラフィックを送信します。これはコンプライアンス上の理由からできません
  • webサーバーへの新しいHTTPS接続を作成します。これは余分な作業負荷のようです

2番目の質問:ドキュメントの理解は正しいですか?

18
John R

WebサーバーでSSL接続を終了するには、ロードバランサーリスナーをHTTPSからTCPに変更する必要があります。 ALBはこれをサポートせず、従来のELBのみをサポートします。さらに、WebサーバーでSSLを終了している場合、ロードバランサーはリクエストを復号化できないため、リクエストを検査できません。したがって、すべての新しいルーティング処理を行うことはできません。 ALBがサポートしていること。

ALBが提供する新機能に実際に使用し、エンドツーエンドの暗号化が必要な場合は、ALBでSSLを終了し、WebサーバーにSSL証明書をインストールする必要があります。 Webサーバー証明書は、クライアントではなくALBのみがその証明書を参照するため、自己署名証明書のようなものになります。

コンプライアンス上の理由(PCI、HIPAAなど)のためにエンドツーエンドの暗号化が必要だと思います。それ以外の場合は、設定の手間を経るほど説得力のある理由はありません。

30
Mark B