為您的應用程式負載平衡器建立 HTTPS 接聽程式 - Elastic Load Balancing

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

為您的應用程式負載平衡器建立 HTTPS 接聽程式

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

若要建立 HTTPS 接聽程式,您必須在負載平衡器上至少部署一個 SSL 伺服器憑證。負載平衡器使用伺服器憑證終止前端連接,然後解密用戶端的請求,再將它們傳送到目標。您也必須指定安全性原則,此原則可用來交涉用戶端與負載平衡器之間的安全連線。

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

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

應用程式負載平衡器不支援 ED25519 金鑰。

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

SSL 憑證

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

建立憑證以搭配您的負載平衡器使用時,您必須指定網域名稱。憑證上的網域名稱必須與自訂網域名稱記錄相符,以便我們可以驗證 TLS 連線。如果它們不相符,則不會加密流量。

您必須為憑證指定完整網域名稱 (FQDN),例如 www.example.com;或者指定 apex 網域名稱 (FQDN),例如 example.com。您也可以使用星號 (*) 做為萬用字元,以保護相同網域中的多個網站名稱。請求萬用字元憑證時,星號 (*) 必須在網域名稱的最左方,而且僅能保護一個子網域層級。例如,*.example.com 保護 corp.example.comimages.example.com,但它無法保護 test.login.example.com。另請注意,*.example.com 只可以保護 example.com 的子網域,無法保護 bare 或 apex 網域 (example.com)。萬用字元名稱會顯示在憑證的「主旨」欄位和「主體別名」副檔名中。如需公有憑證的詳細資訊,請參閱 AWS Certificate Manager 使用者指南中的請求公有憑證

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

或者,您可以使用 SSL/TLS 工具建立憑證簽署要求 (CSR),然後取得 CA 簽署的 CSR 以產生憑證,然後將憑證匯入 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 接聽程式時,您必須選取安全性原則。您可以視需要更新安全政策。如需詳細資訊,請參閱更新安全政策

您可以選擇前端連線所用的安全政策。對於後端連線,如果您的 HTTPS 接聽程式使用 TLS 1.3 安全性原則,則會使用ELBSecurityPolicy-TLS13-1-0-2021-06安全性原則。否則,ELBSecurityPolicy-2016-08安全性原則會用於後端連線。應用程式負載平衡器不支援自訂安全性原則。

注意

僅在新的 EC2 體驗中支援應用程式負載平衡器的 TLS 1.3 政策。使用舊的 EC2 體驗時,無法選擇 TLS 1.3 政策。

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

  • ELBSecurityPolicy-TLS13-1-2-2021-06*

  • ELBSecurityPolicy-TLS13-1-2-Res-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06

  • ELBSecurityPolicy-TLS13-1-1-2021-06

  • ELBSecurityPolicy-TLS13-1-0-2021-06

  • ELBSecurityPolicy-TLS13-1-3-2021-06

  • 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

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

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

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

  • ELBSecurityPolicy-2016-08**

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

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

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

* 對於 HTTPS 接聽程式,我們建議使用ELBSecurityPolicy-TLS13-1-2-2021-06安全性原則。這是使用建立的 HTTPS 接聽程式的預設原則AWS Management Console。此安全性原則包含 TLS 1.3 (針對安全性和效能進行最佳化),並且向下相容於 TLS 1.2。

** 此ELBSecurityPolicy-2016-08原則是使用建立之接聽程式的預設安全性原則。AWS CLI

如果您需要前向保密 (FS),請使用下列政策之一:

  • 任何ELBSecurityPolicy-FS政策

  • ELBSecurityPolicy-TLS13-1-2-2021-06

  • ELBSecurityPolicy-TLS13-1-3-2021-06

  • ELBSecurityPolicy-TLS13-1-2-Res-2021-06

安全性原則

下表說明建議的原則 (ELBSecurityPolicy-TLS13-1-2-2021-06) 和其他 TLS 1.3 政策。ELBSecurityPolicy-前置詞已從標題列的策略名稱中移除,使其符合。

安全政策 
                                            TLS13-1-2-2021-06*
                                        
                                            TLS13-1-3-2021-06
                                        
                                            TLS13-1-2-Res-2021-06
                                        
                                            TLS13-1-2-Ext2-2021-06
                                        
                                            TLS13-1-2-Ext1-2021-06
                                        
                                            TLS13-1-1-2021-06
                                        
                                            TLS13-1-0-2021-06
TLS 通訊協定

Protocol-TLSv1

Protocol-TLSv1.1

Protocol-TLSv1.2

Protocol-TLSv1.3
TLS 加密
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256

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

若要使用檢視負載平衡器的安全性原則組態AWS CLI,請使用describe-ssl-policies命令。中的預設原則AWS CLI為ELBSecurityPolicy-2016-08若要使用升級至 TLS 1.3 安全性原則AWS CLI,請搭配建立接聽程式和修改接聽程式命令使用ssl-policy參數。

FS 支援的政策

下表說明預設原則 ELBSecurityPolicy-2016-08 (預設在中AWS CLI) 和原ELBSecurityPolicy-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-08 (預設在中AWS CLI) 和原ELBSecurityPolicy-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 連線時使用安全政策。

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

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

New EC2 experience
使用主控台新增 HTTPS 接聽程式
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 在監聽器和規則索引標籤上,選擇新增監聽器

  5. 在「通訊協定:連接埠」中,選擇 HTTPS 並保留預設連接埠,或輸入不同的連接埠。

  6. (選擇性) 若要啟用身份驗證,請在「身份驗證」下選取「使用 OpenID 或 Amazon Cognito」,然後提供要求的資訊。如需詳細資訊,請參閱使用應用 Application Load Balancer 驗證用戶

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

    • 轉寄至目標群組 — 選擇一個或多個目標群組以將流量轉寄至目標群組。若要新增目標群組,請選擇新增目標群組。如果使用多個目標群組,請為每個目標群組選取權數並複查相關的百分比。如果您已在一或多個目標群組上啟用相黏性,則必須在規則上啟用群組層級黏著性。

    • 重新導向至 URL — 指定用戶端要求將重新導向至的 URL。這可以通過在 URI 部件選項卡上單獨輸入每個部分來完成,或者在「完整 URL」選項卡上輸入完整地址來完成。對於狀態碼,您可以根據需要將重定向配置為臨時(HTTP 302)或永久(HTTP 301)。

    • 回固定回應 — 指定將傳回至捨棄用戶端要求的回應代碼。此外,您可以指定「內容」類型和「回應」主體,但不是必要的。

  8. 針對安全性原則,建議您一律使用最新的預先定義安全性原則。

  9. 針對預設 SSL/TLS 憑證,有下列選項可用:

    • 如果您使用 AWS Certificate Manager 建立或匯入憑證,請選取從 ACM,然後從選取憑證處選取該憑證。

    • 如果您使用 IAM 匯入憑證,請選取從 IAM,然後從選取憑證處選取您的憑證。

    • 如果您想匯入憑證,但您的區域無法使用 ACM,請依序選取匯入到 IAM。在憑證名稱欄位輸入憑證名稱。在憑證私有金鑰中,複製並貼上私有金鑰檔案的內容 (PEM 編碼)。在憑證內文中,複製並貼上公有金鑰憑證檔案的內容 (PEM 編碼)。在 Certificate Chain (憑證鏈) 中,將憑證鏈檔案的內容 (PEM 編碼) 複製並貼上,除非您使用的是自我簽署憑證,且不介意瀏覽器隱含地接受憑證。

  10. 選擇 Add (新增)。

Old EC2 experience
使用主控台新增 HTTPS 接聽程式
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 在監器頁籤上,選擇新增監聽器

  5. 在「通訊協定:連接埠」中,選擇 HTTPS 並保留預設連接埠,或輸入不同的連接埠。

  6. (選用) 若要驗證使用者,針對 Default actions (預設動作),選擇 Add action (新增動作)Authenticate (驗證),並提供請求的資訊。如需詳細資訊,請參閱使用應用 Application Load Balancer 驗證用戶

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

    • 選擇 [轉寄] 並選擇目標群組。

    • 選擇「重新導向」並提供 URL 和狀態碼。如需詳細資訊,請參閱重新導向動作

    • 選擇 [傳回固定回應] 並提供回應碼、選用的身分識別提供者,以及選擇性的回應內文。如需詳細資訊,請參閱固定回應動作

  8. 針對安全性原則,建議您保留主控台建議的安全性原則。

  9. 對於預設 SSL/TLS 憑證,請執行下列其中一項作業:

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

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

  10. 選擇 Add (新增)。

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

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

使用 AWS CLI 新增 HTTPS 接聽程式

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

更新 HTTPS 接聽程式

建立 HTTPS 接聽程式之後,您可以更換預設憑證、更新憑證清單或更換安全政策。如需詳細資訊,請參閱更新應用程式負載平衡器的 HTTPS 接聽程式