如何對 CloudFront 分佈透過 HTTPS 連線至自訂來源的問題進行疑難排解?

2 分的閱讀內容
0

我將我的 Amazon CloudFront 分佈設定為使用 HTTPS 連線至自訂來源。現在,我收到「CloudFront 無法連線至來源」錯誤與 HTTP 狀態碼 502 (錯誤閘道)。

解決方法

確認 CloudFront 分佈的來源網域名稱與憑證網域名稱相符

確認 CloudFront 分佈上指定的來源網域名稱與來源 SSL/TLS 憑證上的網域名稱相符。分佈的來源網域名稱可以符合下列任一項:

  • 指定為憑證常見名稱 (CN) 的網域名稱
  • 憑證的主體替代名稱 (SAN) 中指定的網域名稱

如果來源網域名稱與您的憑證相關聯的任何網域名稱不相符,CloudFront 會傳回 HTTP 狀態碼 502 (無效閘道)。

檢查是否有遺漏的中繼憑證授權單位

使用 SSL 檢查程式來測試來源的憑證鏈結是否可用,而且不需要任何中繼憑證授權單位。

如果您使用 Elastic Load Balancing 作為自訂來源,且必須更新憑證鏈結,請執行下列動作:

使用正確的憑證鏈結再次上傳憑證。

-或-

使用 AWS Certificate Manager (ACM) 申請保護網域的公有憑證。ACM 與 Elastic Load Balancing 完全整合。

測試來源支援的協定政策和密碼

為了讓 SSL 交握成功,您的來源必須支援CloudFront 使用的密碼

如果您的來源協定政策已開啟 SSLv3,則 CloudFront 只會使用 SSLv3 從命令列或 Windows 終端與您的來源通訊。

**注意:**OpenSSL 通常在預設情況下可以在 Linux 和 macOS 系統上使用。Windows 版的 OpenSSL可在 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 狀態碼 (無效閘道)


相關資訊

CloudFront 和您的自訂來源之間的通訊需要 HTTPS

AWS 官方
AWS 官方已更新 2 年前