Application Load Balancer 中的 TLS 相互驗證 - Elastic Load Balancing

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

Application Load Balancer 中的 TLS 相互驗證

相互 TLS 驗證是傳輸層安全性 (TLS) 的一種變體。傳統 TLS 會在伺服器與用戶端之間建立安全通訊,伺服器需要將其身分提供給用戶端。使用相互 TLS 時,負載平衡器會在交涉 TLS 時交涉用戶端與伺服器之間的相互驗證。當您將相互 TLS 與應用程式負載平衡器搭配使用時,可簡化驗證管理並減少應用程式的負載。

透過將相互 TLS 與應用程式負載平衡器搭配使用,您的負載平衡器可以管理用戶端驗證,以協助確保只有受信任的用戶端與您的後端應用 當您使用此功能時,Application Load Balancer 會使用來自協力廠商憑證授權單位 (CA) 的憑證,或選擇性地使用 AWS Private Certificate Authority (PCA) 進行撤銷檢查來驗證用戶端。應用 Application Load Balancer 會將用戶端憑證資訊傳遞至後端,您的應用程式可用於授權。透過在應用程式負載平衡器中使用相互 TLS,您可以為使用已建立程式庫的憑證型實體取得內建、可調整的受管理驗證。

應用程式負載平衡器的相互 TLS 提供下列兩個選項來驗證 X.509v3 用戶端憑證:

備註:不支援 X.509v1 用戶端憑證。

  • 相互 TLS 傳遞:當您使用相互 TLS 傳遞模式時,Application Load Balancer 會使用 HTTP 標頭將整個用戶端憑證鏈傳送至目標。然後,透過使用用戶端憑證鏈結,您可以在應用程式中實作對應的驗證和授權邏輯。

  • 相互 TLS 驗證:當您使用相互 TLS 驗證模式時,Application Load Balancer 會在負載平衡器交涉 TLS 連線時,為用戶端執行 X.509 用戶端憑證驗證。

若要在應用 Application Load Balancer 中使用傳遞開始使用相互 TLS,您只需要設定接聽程式以接受來自用戶端的任何憑證即可。若要搭配驗證使用相互 TLS,您必須執行下列動作:

  • 建立新的信任儲存區資源。

  • 上傳您的憑證授權單位 (CA) 服務包,以及 (選擇性) 撤銷清單。

  • 將信任儲存區附加到設定為驗證用戶端憑證的監聽器。

如需使用應用 step-by-step 程式負載平衡器設定相互 TLS 驗證模式的程序,請參閱在 Application Load Balancer 器上設定相互 TLS

在 Application Load Balancer 上開始設定相互 TLS 之前

在 Application Load Balancer 上開始設定相互 TLS 之前,請注意下列事項:

配額

應用程式負載平衡器包含與您 AWS 帳戶中使用的信任存放區、CA 憑證和憑證撤銷清單數量相關的某些限制。

如需詳細資訊,請參閱應用程式負載平衡器的配額

憑證需求

應用程式負載平衡器針對與相互 TLS 驗證搭配使用的憑證支援下列項目:

  • 支援的憑證:

  • 支持的公共密鑰:RSA 2K-8K 或 ECDSA 秒 256r1,秒 521r1

  • 支援的簽章演算法:SHA256、384、512 搭配使用 RSA/SHA256、384、512 搭配使用 RSA/SHA256,384,512 雜湊,搭配 MGF1

CA 憑證組合包

以下內容適用於憑證授權單位 (CA) 套裝軟體:

  • 應用程式負載平衡器會以批次方式上傳每個憑證授權單位 (CA) 憑證服務包。應用程式負載平衡器不支援上傳個別憑證。如果您需要新增憑證,您必須上傳憑證組合檔案。

  • 若要取代 CA 憑證服務包,請使用ModifyTrust存放區 API。

傳遞的憑證訂單

當您使用相互 TLS 傳遞時,Application Load Balancer 會插入標頭,將用戶端憑證鏈結呈現給後端目標。簡報的順序從葉證書開始,並以根證書結束。

工作階段恢

透過應用程式負載平衡器使用相互 TLS 傳遞或驗證模式時,不支援工作階段重新開始。

HTTP 標頭

應用程式負載平衡器使用相互 TLS 交涉用戶端連線時,會使用X-Amzn-Mtls標頭傳送憑證資訊。如需詳細資訊和範例標頭,請參閱HTTP 標頭和相互 TLS

CA 憑證檔案

CA 憑證檔案必須符合下列需求:

  • 憑證檔案必須使用 PEM (隱私權加強郵件) 格式。

  • 憑證內容必須包含在-----BEGIN CERTIFICATE----------END CERTIFICATE-----邊界內。

  • 註解前必須有一個#字元。

  • 不能有任何空行。

不接受的憑證範例 (無效):

# comments Certificate: Data: Version: 3 (0x2) Serial Number: 01 Signature Algorithm: ecdsa-with-SHA384 Issuer: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Validity Not Before: Jan 11 23:57:57 2024 GMT Not After : Jan 10 00:57:57 2029 GMT Subject: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (384 bit) pub: 00:01:02:03:04:05:06:07:08 ASN1 OID: secp384r1 NIST CURVE: P-384 X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment, Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: 00:01:02:03:04:05:06:07:08 X509v3 Subject Alternative Name: URI:EXAMPLE.COM Signature Algorithm: ecdsa-with-SHA384 00:01:02:03:04:05:06:07:08 -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

接受的憑證範例 (有效):

  1. 單一憑證 (PEM 編碼):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. 多個憑證 (PEM 編碼):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

HTTP 標頭和相互 TLS

本節說明在與使用相互 TLS 的用戶端交涉連線時,應用程式負載平衡器用來傳送憑證資訊的 HTTP 標頭。應用程式負載平衡器使用的特定X-Amzn-Mtls標頭取決於您指定的相互 TLS 模式:傳遞模式或驗證模式。

如需應用程式負載平衡器支援的其他 HTTP 標頭的相關資訊,請參閱HTTP 標頭和 Application Load Balancer

用於直通模式的 HTTP 標頭

對於傳遞模式下的相互 TLS,應用程式負載平衡器會使用下列標頭。

此標頭包含連線中顯示之整個用戶端憑證鏈結的 URL 編碼 PEM 格式,並以安全字元形式顯示。+=/

示例頭內容:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

用於驗證模式的 HTTP 標頭

對於驗證模式下的相互 TLS,應用程式負載平衡器會使用下列標頭。

此標頭包含分葉憑證序號的十六進位表示法。

示例頭內容:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

此標頭包含簽發者辨別名稱 (DN) 的 RFC2253 字串表示。

示例頭內容:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

此標頭包含主旨辨別名稱 (DN) 的 RFC2253 字串表示。

示例頭內容:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

此標頭包含notBeforenotAfter日期的 ISO8601 格式。

示例頭內容:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

此標頭包含葉憑證的 URL 編碼 PEM 格式,+=/以安全字元形式。

示例頭內容:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

在 Application Load Balancer 器上設定相互 TLS

本節包括為應用程式負載平衡器上的驗證設定相互 TLS 驗證模式的程序。

若要使用相互 TLS 傳遞模式,您只需要將接聽程式設定為接受來自用戶端的任何憑證。當您使用相互 TLS 傳遞時,應用 Application Load Balancer 會使用 HTTP 標頭將整個用戶端憑證鏈傳送至目標,讓您在應用程式中實作對應的驗證和授權邏輯。如需詳細資訊,請參閱為應用程式負載平衡器建立 HTTPS 接聽程式

當您在驗證模式下使用相互 TLS 時,當負載平衡器交涉 TLS 連線時,應用程式負載平衡器會為用戶端執行 X.509 用戶端憑證驗證。

若要使用相互 TLS 驗證模式,請執行下列動作:

  • 建立新的信任儲存區資源。

  • 上傳您的憑證授權單位 (CA) 服務包,以及 (選擇性) 撤銷清單。

  • 將信任儲存區附加到設定為驗證用戶端憑證的監聽器。

請遵循本節中的程序,在中的應用程式負載平衡器上設定相互 TLS 驗證模式 AWS Management Console。若要使用 API 作業而非主控台來設定相互 TLS,請參閱應用程式負載平衡器 API 參考指南

建立信任存放區

建立信任存放區的方法有三種:建立應用程式負載平衡器時、建立安全接聽程式時,以及使用 Trust Store 主控台。當您在建立負載平衡器或接聽程式時新增信任存放區時,信任存放區會自動與新的接聽程式產生關聯。使用「信任存放區」主控台建立信任存放區時,您必須自行將其與接聽程式建立關聯。

本節涵蓋使用 Trust Store 主控台建立信任存放區,但建立應用程式負載平衡器或接聽程式時所使用的步驟相同。如需詳細資訊,請參閱設定負載平衡器和接聽程式新增 HTTPS 接聽程式

事前準備:
  • 若要建立信任存放區,您必須擁有來自憑證授權單位 (CA) 的憑證服務包。

使用主控台建立信任存放區
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取建立信任存放區

  4. 信任存放區組態

    1. 針對「信任」商店名稱,輸入信任存放區的名稱。

    2. 對於憑證授權單位服務包,請輸入您希望信任存放區使用的 ca 憑證服務包的 Amazon S3 路徑。

      可選:使用物件版本選取先前版本的 ca 憑證套裝軟體。否則會使用目前的版本。

  5. 對於撤銷,您可以選擇性地將憑證撤銷清單新增至您的信任存放區。

    1. 憑證撤銷清單下,輸入您希望信任存放區使用的憑證撤銷清單的 Amazon S3 路徑。

      可選:使用物件版本選取舊版憑證撤銷清單。否則會使用目前的版本。

  6. 對於 Trust 商店標籤,您可以選擇性地輸入最多 50 個標籤,以套用至您的信任存放區。

  7. 選取建立信任存放區

建立信任存放區關聯

建立信任存放區之後,您必須先將其與接聽程式建立關聯,應用程式負載平衡器才能開始使用信任存放區。您只能將一個信任存放區與每個安全偵聽程式相關聯,但是一個信任存放區可以與多個偵聽程式相關聯。

本節涵蓋將信任存放區與現有接聽程式相關聯。或者,您可以在建立應用程式負載平衡器或接聽程式時關聯信任儲存區。如需詳細資訊,請參閱設定負載平衡器和接聽程式新增 HTTPS 接聽程式

使用主控台建立信任儲存區的關聯
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選取負載平衡器以檢視其詳細資訊頁面。

  4. 監聽器和規則頁籤上,選擇協定:連接埠資料欄中的連結,以開啟安全監聽器的詳細資訊頁面。

  5. 安全性索引標籤上,選擇編輯安全接聽程式設定

  6. (選擇性) 如果未啟用相互 TLS,請選取 [用戶端憑證處理] 下的 [相互驗證 (MTL)],然後選擇 [以信任存放區驗證]。

  7. 在 [信任存放區] 底下,選擇您建立的信任存放區。

  8. 選擇儲存變更

檢視信任存放區詳細

CA 憑證組合包

CA 憑證服務包是信任存放區的必要元件。它是受信任的根憑證和中繼憑證的集合,這些憑證已經由憑證授權單位驗證。這些驗證的憑證可確保用戶端可以信任所提供的憑證是由負載平衡器所擁有。

您可以隨時在信任存放區中檢視目前 CA 憑證服務包的內容。

檢視 CA 憑證套裝軟體
使用控制台檢視 CA 憑證套裝軟體
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視詳細資料頁面。

  4. 選擇動作,然後選擇取得 CA 套裝軟體

  5. 選擇 [分享連結] 或 [下載]。

憑證撤銷清單

或者,您可以為信任存放區建立憑證撤銷清單。撤銷清單會由憑證授權單位發行,並包含已撤銷之憑證的資料。應用程式負載平衡器僅支援 PEM 格式的憑證撤銷清單。

將憑證撤銷清單新增至信任存放區時,會提供撤銷 ID。每次新增至信任存放區的撤銷清單,撤銷 ID 都會增加,而且無法變更。如果從信任存放區刪除憑證撤銷清單,它的撤銷 ID 也會一併刪除,而且不會在信任存放區的有效期間重複使用。

注意

應用程式負載平衡器無法撤銷憑證撤銷清單中具有負數序號的憑證。

檢視憑證撤銷清單
使用主控台檢視撤銷清單
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視詳細資料頁面。

  4. 憑證撤銷清單索引標籤上,選取動作,然後選取取得撤銷清單。

  5. 選擇 [分享連結] 或 [下載]。

修改信任存放區

信任存放區一次只能包含一個 CA 憑證服務包,但您可以在建立信任存放區之後隨時取代 CA 憑證服務包。

取代 CA 憑證套裝軟體

使用控制台取代 CA 憑證套裝軟體
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視詳細資料頁面。

  4. 選擇動作,然後選擇取代 CA 套裝軟體

  5. 在「取代 CA 服務包」頁面的「憑證授權單位服務包」下,輸入所需 CA 服務包的 Amazon S3 位置。

  6. (選擇性) 使用物件版本選取舊版憑證撤銷清單。否則會使用目前的版本。

  7. 選取取代 CA 套裝軟體

新增憑證撤銷清單

若要使用主控台新增撤銷清單
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視其詳細資料頁面。

  4. 憑證撤銷清單索引標籤上,選取動作,然後選取新增撤銷清單。

  5. 在 [新增撤銷清單] 頁面的 [憑證撤銷清單] 下,輸入所需憑證撤銷清單的 Amazon S3 位置

  6. (選擇性) 使用物件版本選取舊版憑證撤銷清單。否則會使用目前的版本。

  7. 選擇添加撤銷列表

刪除憑證撤銷清單

若要使用主控台刪除撤銷清單
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視詳細資料頁面。

  4. 憑證撤銷清單索引標籤上,選取動作,然後選取刪除撤銷清單。

  5. 輸入以確認刪除confirm

  6. 選取刪除

刪除信任存放區

當您不再使用信任存放區時,您可以將其刪除。

注意:您無法刪除目前與監聽器關聯的信任儲存區。

使用主控台刪除信任存放區
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在功能窗格中,選擇 [信任存放區]。

  3. 選取信任存放區以檢視其詳細資料頁面。

  4. 選擇動作,然後選擇刪除信任存放區

  5. 輸入以確認刪除confirm

  6. 選擇刪除

應用程式負載平衡器的連線記錄

Elastic Load Balancing 提供連線記錄,可擷取傳送至應用程式負載平衡器之要求的相關屬性。連線記錄包含資訊,例如用戶端 IP 位址和連接埠、用戶端憑證資訊、連線結果,以及正在使用的 TLS 密碼。然後,這些連線記錄可用於檢閱請求模式和其他趨勢。

若要深入瞭解連線記錄,請參閱 Application Load Balancer 的連線記錄