CloudFront ディストリビューションとロードバランサー間の HTTP 接続は機能しますが、HTTPS 接続は失敗します。なぜでしょうか?
最終更新日: 2020 年 8 月 6 日
Amazon CloudFront ディストリビューションのオリジンとして Classic Load Balancer または Application Load Balancer を使用しています。ロードバランサーに HTTPS リスナーと HTTP リスナーが設定されていますが、CloudFront とロードバランサー間の HTTPS 通信が失敗します。使用しているディストリビューションのオリジンプロトコルポリシーを HTTP のみに変更した場合、接続は機能します。HTTPS 通信の問題を解決するにはどうすればよいですか。
解決方法
HTTPS 通信の失敗は、関連付けられている SSL 証明書、セキュリティグループ、またはネットワークアクセスコントロールリスト (ACL) に関する問題が原因である可能性があります。使用しているディストリビューションとロードバランサーが次のセキュリティ要件を満たしていることを確認してください。
- ロードバランサーに有効な SSL 証明書をインストールしておく必要があります。SSL 証明書をインストールしてもまだ HTTPS エラーが発生する場合は、CloudFront とカスタムオリジンサーバー間の SSL 接続をトラブルシューティングします。
- CloudFront ディストリビューションがポート 443 でロードバランサーに接続する場合、ロードバランサーに関連付けられているセキュリティグループは、CloudFront IP アドレスのポート 443 でトラフィックを許可する必要があります。セキュリティグループの更新の詳細については、Classic Load Balancer のセキュリティグループの設定または Application Load Balancer のセキュリティグループを参照してください。
- ロードバランサーの Amazon Virtual Private Cloud (Amazon VPC) に関連付けられている ネットワーク ACL は、HTTPS ポート (通常はポート 443) で CloudFront からのトラフィックを許可する必要があります。
注意: Application Load Balancers は、Server Name Indication (SNI) を使用したスマート選択を用いて複数の TLS 証明書をサポートします。CloudFront ディストリビューションがホストヘッダーに基づいてキャッシュする場合、Application Load Balancer に同じ名前で設定された TLS 証明書があることを確認します。それ以外の場合、Application Load Balancer はデフォルト証明書を提示します。これは、CloudFront からの ClientHello メッセージに関連付けられている SNI と一致しない可能性があります。