為您的 Application Load Balancer 建立 HTTPS 接聽程式 - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為您的 Application Load Balancer 建立 HTTPS 接聽程式

接聽程式是檢查連線請求的程序。當您在立負載平衡器時便定義接聽程式,然後可隨時新增接聽程式到您的負載平衡器。

您可以建立使用加密連線的 HTTPS 接聽程式 (也稱為 SSL 卸載)。此功能可讓您的負載平衡器與初始 SSL 或 TLS 工作階段的用戶端之間的流量啟用加密。

如果您需要在負載平衡器解密的情況下將加密流量傳遞給目標,則可以在連接埠 443 上建立具有 TCP 接聽程式的 Network Load Balancer 或 Classic Load Balancer。使用 TCP 接聽程式時,負載平衡器會將加密的流量傳送到目標,而不需要解密。

Application Load Balancer 不支援相互 TLS 驗證 (mTLS)。對於 MTL 支援,請使用 Network Load Balancer 或 Classic Load Balancer 建立 TCP 接聽程式,並在目標上實作 MTL。

此頁面的資訊協助您為負載平衡器建立 HTTPS 接聽程式。若要將 HTTP 接聽程式新增至您的負載平衡器,請參閱為您的 Application Load Balancer 器建立 HTTP 接聽程式

SSL 憑證

若要使用 HTTPS 接聽程式,您必須在負載平衡器上部署至少一個 SSL/TLS 伺服器憑證。負載平衡器使用伺服器憑證終止前端連接,然後解密用戶端的請求,再將它們傳送到目標。

負載平衡器需要 X.509 憑證 (SSL/TLS 伺服器憑證)。憑證為憑證授權機構 (CA) 發出的數位形式身分證明。憑證包含識別資訊、有效期間、公有金鑰、序號和發行者的數位簽章。

建立憑證以搭配您的負載平衡器使用時,您必須指定網域名稱。

建議您使用以下方式為負載平衡器建立憑證AWS Certificate Manager(阿克姆)。ACM 支援具有 2048、3072 和 4096 位元金鑰長度的 RSA 憑證,以及所有 ECDSA 憑證。ACM 會與 Elastic Load Balancing 整合,以便您在負載平衡器上部署憑證。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南

或者,您也可以使用 SSL/TLS 工具建立憑證簽署請求 (CSR),接著取得由 CA 簽署的憑證以產生憑證,然後將憑證匯入 ACM 或上傳憑證AWS Identity and Access Management(IAM). 如需憑證匯入憑證至 ACM 的詳細資訊,請參閱匯入憑證AWS Certificate Manager使用者指南。如需上傳憑證至 IAM 的詳細資訊,請參閱 IAM 使用者指南中的使用伺服器憑證

預設憑證

建立 HTTPS 接聽程式時,您必須指定剛好一個憑證。此憑證稱為預設憑證。您可以在建立 HTTPS 接聽程式之後取代預設憑證。如需詳細資訊,請參閱 更換預設憑證

如果您在憑證清單中指定額外憑證,只有當用戶端連接時未使用伺服器名稱指示 (SNI) 通訊協定來指定主機名稱,或憑證清單中沒有相符的憑證時,才會使用預設憑證。

如果您不指定額外憑證,但需要透過單一負載平衡器來託管多個安全應用程式,您可以使用萬用字元憑證,或將每個額外網域的主體別名 (SAN) 新增至憑證。

憑證清單

HTTPS 接聽程式建立之後具有預設憑證和空的憑證清單。您可以選擇性將憑證新增至接聽程式的憑證清單。使用憑證清單可讓負載平衡器在相同連接埠上支援多個網域,並為每個網域提供不同的憑證。如需詳細資訊,請參閱 將憑證新增至憑證清單

負載平衡器使用支援 SNI 的智慧憑證選擇演算法。如果用戶端提供的主機名稱符合憑證清單中的單一憑證,負載平衡器會選取此憑證。如果用戶端提供的主機名稱符合憑證清單中的多個憑證,負載平衡器會選取用戶端可支援的最佳憑證。憑證選擇是根據採用下列順序的以下條件:

  • 公有金鑰演算法 (ECDSA 優於 RSA)

  • 雜湊演算法 (SHA 優於 MD5)

  • 金鑰長度 (最好是最大)

  • 有效期間

負載平衡器存取日誌項目會指出用戶端指定的主機名稱和向用戶端出示的憑證。如需詳細資訊,請參閱 存取日誌項目

憑證續約

每個憑證均附帶有效期間。您必須確保在有效期間結束之前,續約或更換負載平衡器的每個憑證。這包括預設憑證和憑證清單中的憑證。續約或更換憑證不會影響負載平衡器節點收到並且等待路由到運作狀態良好目標的傳輸中請求。續約憑證之後,新請求會使用續約的憑證。更換憑證之後,新請求會使用新的憑證。

您可以如下所示管理憑證續約和更換:

  • AWS Certificate Manager 提供和部署在您的負載平衡器上的憑證可以自動續約。ACM 會在憑證過期之前嘗試續約。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的受管續約

  • 如果您將憑證匯入至 ACM,則必須監控憑證的過期日期,並在憑證過期之前續約。如需詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的匯入憑證

  • 如果您將憑證匯入 IAM,則必須建立新憑證、將新憑證匯入 ACM 或 IAM、將新憑證新增至負載平衡器,然後從負載平衡器中移除過期的憑證。

安全政策

Elastic Load Balancing 使用 Secure Sockets Layer (SSL) 交涉組態 (稱為安全政策),在用戶端與負載平衡器之間交涉 SSL 連線。安全政策為通訊協定與加密的組合。通訊協定會在用戶端與伺服器之間建立安全連線,並確保在用戶端與負載平衡器之間傳遞的所有資料為私有。隨碼是一項加密演算法,使用加密金鑰來建立編碼的訊息。通訊協定使用多個加密來加密透過網際網路的資料。在連線交涉程序期間,用戶端與負載平衡器會出示它們分別支援的加密和通訊協定的清單 (以偏好的順序)。在預設情況下,將針對安全連線選取伺服器清單上符合任何用戶端加密的第一個加密。

應用程式負載平衡器不支援用戶端或目標連線的 SSL 重新交涉。

建立 HTTPS 接聽程式時,您必須選取安全性原則。您可以視需要更新安全政策。如需詳細資訊,請參閱 更新安全政策

您可以選擇前端連線所用的安全政策。所以此ELBSecurityPolicy-2016-08安全策略始終用於後端連接。Application Load Balancer 不支援自訂安全性原則。

Elastic Load Balancing 為應用程式負載平衡器提供下列安全性原則:

  • ELBSecurityPolicy-2016-08 (default)

  • ELBSecurityPolicy-TLS-1-0-2015-04

  • ELBSecurityPolicy-TLS-1-1-2017-01

  • ELBSecurityPolicy-TLS-1-2-2017-01

  • ELBSecurityPolicy-TLS-1-2-Ext-2018-06

  • ELBSecurityPolicy-FS-2018-06

  • ELBSecurityPolicy-FS-1-1-2019-08

  • ELBSecurityPolicy-FS-1-2-2019-08

  • ELBSecurityPolicy-FS-1-2-Res-2019-08

  • ELBSecurityPolicy-2015-05 (與 ELBSecurityPolicy-2016-08 相同)

  • ELBSecurityPolicy-FS-1-2-Res-2020-10

為了相容,我們建議 ELBSecurityPolicy-2016-08 政策。如果您需要遠期保密 (FS),則可以使用其中一個 ELBSecurityPolicy-FS 政策。您可以使用其中一個 ELBSecurityPolicy-TLS 政策,以滿足需要停用特定 TLS 通訊協定版本的合規和安全標準,或是支援需要已淘汰加密的舊版用戶端。網際網路用戶端中只有一小部分百分比需要 TLS 版本 1.0。若要檢視對您的負載平衡器的請求 TLS 通訊協定版本,請為您的負載平衡器啟用存取記錄並檢查存取日誌。如需詳細資訊,請參閱存取日誌

FS 支援的政策

下表說明預設政策 ELBSecurityPolicy-2016-08ELBSecurityPolicy-FS 政策。已從標頭列的政策名稱移除 ELBSecurityPolicy-,使其相符。

安全政策 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2020-10
                                        
                                            ELBSecurityPolicy-FS-1-2-Res-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-2-2019-08
                                        
                                            ELBSecurityPolicy-FS-1-1-2019-08
                                        
                                            ELBSecurityPolicy-FS-2018-06
TLS 通訊協定

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS 加密

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

TLS 安全政策

下表說明預設政策 ELBSecurityPolicy-2016-08ELBSecurityPolicy-TLS 政策。已從標頭列的政策名稱移除 ELBSecurityPolicy-,使其相符。

安全政策 
                                            ELBSecurityPolicy-2016-08
                                        
                                            ELBSecurityPolicy-TLS-1-2-Ext-2018-06
                                        
                                            ELBSecurityPolicy-TLS-1-2-2017-01
                                        
                                            ELBSecurityPolicy-TSL-1-1-2017-01
                                        
                                            ELBSecurityPolicy-TLS-1-0-2015-04
TLS 通訊協定

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

TLS 加密

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES128-SHA256

ECDHE-RSA-AES128-SHA256

ECDHE-ECDSA-AES128-SHA

ECDHE-RSA-AES128-SHA

ECDHE-ECDSA-AES256-GCM-SHA384

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES256-SHA384

ECDHE-RSA-AES256-SHA384

ECDHE-RSA-AES256-SHA

ECDHE-ECDSA-AES256-SHA

AES128-GCM-SHA256

AES128-SHA256

AES128-SHA

AES256-GCM-SHA384

AES256-SHA256

AES256-SHA

DES-CBC3-SHA

*除非您必須支援需要 DES-CBC3-SHA 密碼 (弱式加密) 的舊版用戶端,否則請勿使用此原則。

使用檢視應用程式負載平衡器的安全性原則組態AWS CLI,使用describe-ssl-policies指令。

新增 HTTPS 接聽程式

您使用用戶端與負載平衡器間連線的通訊協定與連接埠來設定接聽程式,並為預設接聽程式規則設定目標群組。如需詳細資訊,請參閱 接聽程式組態

先決條件

  • 若要建立 HTTPS 接聽程式,您必須指定憑證和安全政策。負載平衡器會使用憑證來終止連接,然後解密用來自戶端的請求,之後才將它們路由到目標。負載平衡器會在與用戶端交涉 SSL 連線時使用安全政策。

  • 若要新增轉送動作到預設的接聽程式規則,您必須指定可用的目標群組。如需詳細資訊,請參閱 建立目標群組

  • 您可以在多個監聽器中指定相同的目標群組,但這些監聽器必須屬於相同的負載平衡器。若要將目標群組與負載平衡器搭配使用,您必須確認任何其他負載平衡器的接聽程式未使用該群組。

使用主控台新增 HTTPS 接聽程式

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格的 LOAD BALANCING (負載平衡) 下方,選擇 Load Balancers (負載平衡器)。

  3. 選取一個負載平衡器,然後選擇 Listeners (接聽程式)Add listener (新增接聽程式)

  4. 對於通訊協定:連接埠,選擇HTTPS並保留預設連接埠或輸入其他連接埠。

  5. (選用) 若要驗證使用者,針對 Default actions (預設動作),選擇 Add action (新增動作)Authenticate (驗證),並提供請求的資訊。若要儲存動作,請選擇核取記號圖示。如需詳細資訊,請參閱 使用 Application Load Balancer 驗證使用者

  6. 針對 Default actions (預設動作),執行下列其中一項作業:

    • 選擇 Add action (新增動作)Forward to (轉送至),然後選擇目標群組。

    • 選擇 Add action (新增動作)Redirect to (重新導向至),並提供重新導向的 URL。如需詳細資訊,請參閱 重新導向動作

    • 選擇 Add action (新增動作)Return fixed response (傳回固定回應),並提供回應代碼和選用的回應內文。如需詳細資訊,請參閱 固定回應動作

    若要儲存動作,請選擇核取記號圖示。

  7. 針對 Security policy (安全政策),建議您保留預設的安全政策。

  8. 針對 Default SSL certificate (預設 SSL 憑證),執行下列其中一項作業:

    • 如果您使用 AWS Certificate Manager 建立或匯入憑證,請選擇 From ACM (從 ACM),並選擇憑證。

    • 如果您使用 IAM 上傳憑證,請選擇從 IAM並選擇證書。

  9. 選擇 Save (儲存)。

  10. (選用) 若要定義會根據路徑模式或主機名稱轉送請求的額外的接聽程式規則,請參閱新增規則

  11. (選用) 若要新增憑證清單以搭配 SNI 通訊協定一起使用,請參閱將憑證新增至憑證清單

使用 AWS CLI 新增 HTTPS 接聽程式

使用 create-listener 命令來建立接聽程式和預設規則,以及 create-rule 命令來定義額外的接聽程式規則。

更新 HTTPS 接聽程式

建立 HTTPS 接聽程式之後,您可以更換預設憑證、更新憑證清單或更換安全政策。如需詳細資訊,請參閱 更新 Application Load Balancer 的 HTTPS 接聽程式