HTTPS を介したカスタムオリジンへの CloudFront ディストリビューションの接続に関する問題をトラブルシューティングするにはどうすればよいですか?

最終更新日: 2021 年 7 月 9 日

HTTPS を使用してカスタムオリジンに接続するように Amazon CloudFront ディストリビューションを設定しました。HTTP ステータスコード 502 (Bad Gateway) の「CloudFront は Origin に接続できませんでした」というエラーが返されます。

解決方法

CloudFront ディストリビューションのオリジンドメイン名が証明書のドメイン名と一致していることを確認する

CloudFront ディストリビューションで指定したオリジンドメイン名が、オリジン SSL/TLS 証明書のドメイン名と一致していることを確認します。ディストリビューションのオリジンドメイン名は、次のいずれかに一致する場合があります。

  • 証明書の共通名 (CN) として指定されたドメイン名
  • 証明書のサブジェクト代替名 (SAN) で指定されたドメイン名

オリジンドメイン名が、証明書に関連付けられているドメイン名と一致しない場合は、CloudFront より HTTP ステータスコード 502 (Bad Gateway) が返ります。

中間認証局に不足がないか確認する

オリジンの証明書チェーンが有効であり、中間認証局が不要かどうかをテストするには、SSL チェッカーを使用します。

カスタムオリジンとして Elastic Load Balancing を使用し、証明書チェーンを更新する必要がある場合は、次の手順を実行します。

正しい証明書チェーンを使用して証明書を再度アップロードします。

- または -

AWS Certificate Manager (ACM) を使用して、ドメインを保護するパブリック証明書をリクエストします。ACM は Elastic Load Balancing と完全に統合されています。

オリジンのサポートされるプロトコルポリシーと暗号をテストする

SSL ハンドシェイクが成功するためには、CloudFront が使用する暗号がオリジンでサポートされている必要があります。

オリジンプロトコルポリシーで SSLv3 が有効になっている場合、CloudFront は、コマンドラインまたは Windows ターミナルからオリジンへの通信に SSLv3 のみを使用します。

注: OpenSSL は通常、Linux および macOS システムではデフォルトで利用できます。OpenSSL for Windows は OpenSSL のウェブサイトで入手できます。

CloudFront で使用される暗号がオリジンでサポートされているかどうかをテストするには、次の OpenSSL コマンドを実行します。

オリジンプロトコルポリシーが SSLv3 に設定されている場合は、以下を実行します。

echo | openssl s_client -ssl3 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443

オリジンで TLS が使用されている場合は、次のコマンドを使用して、プロトコルごとにオリジンをテストします。

TLS の場合は、以下を実行します。

echo | openssl s_client -tls1 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

TLS 1.1 の場合は、以下を実行します。

echo | openssl s_client -tls1_1 -cipher 'ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

TLS 1.2 の場合は、以下を実行します。

echo | openssl s_client -tls1_2 -cipher 'ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 AES256-SHA AES128-SHA DES-CBC3-SHA RC4-MD5 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-ECDSA-AES128-SHA' -connect your.origin.domain:443 -servername your.origin.domain

注: -servername の値を、オリジンドメイン名に設定します。または、CloudFront を使用してホストヘッダーを転送する場合は、CloudFront リクエストから -servername を CNAME に設定します。

オリジンに正常に接続すると、次のような、前述のコマンドの出力が表示されます。出力では、SSL または TLS バージョンおよびサポートされている暗号を使用して接続が正常に確立されたことが確認されます。

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-SHA256
....
Timeout : 7200 (sec)
Verify return code: 0 (ok)
----
DONE

注: 502 エラーに関するトラブルシューティングのガイダンスについては、HTTP 502 ステータスコード (Bad Gateway) を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?