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

所要時間2分
0

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) を参照してください。


関連情報

CloudFront とカスタムオリジンとの間の通信に HTTPS を必須にする

AWS公式
AWS公式更新しました 2年前