傳輸層安全標準 (TLS) 設定選項

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

本節說明如何針對從 Proxy 到目標的流量設定 TLS。

關於在目標端點或目標伺服器中設定 TLS 選項

目標可以由 XML 物件表示,如下所示:

<HTTPTargetConnection>
    <Properties/>
    <URL>https:myTargetAddress</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <Enforce>true</Enforce>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTruststoreRef</TrustStore>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <Protocols>myProtocols</Protocols>
        <Ciphers>myCipher</Ciphers>
    </SSLInfo>
</HTTPTargetConnection>

您修改用於設定 TLS 的目標端點設定區域,是由 <SSLInfo> 標記定義。您可以使用相同的 <SSLInfo> 標記來設定目標端點或目標伺服器。

如要瞭解 <SSLInfo> 的子元素,請參閱 TLS/SSL TargetEndpoint 設定

下表說明 <SSLInfo> 標記使用的 TLS 設定元素:

元素 說明
<Enabled> <SSLInfo> 區塊可用於單向和雙向 TLS/SSL。

如果設為 true<Enabled> 會指定應使用 <SSLInfo> 區塊。如果設為 false,系統會忽略 <SSLInfo> 區塊。

如果 <URL> 指定 HTTPS 通訊協定,<Enabled> 的預設值為 true;如果 <URL> 指定 HTTP,則預設值為 false

<Enforce>

在 Apigee 和目標後端之間強制執行嚴格的 SSL。

如果設為 true,則會針對憑證無效、憑證已過期、憑證為自簽、憑證主機名稱不符或憑證根目錄不受信任的目標,導致連線失敗。系統會傳回 4xx5xx 的失敗代碼。

如果未設定或設為 false,則連線至有問題憑證的目標後端的結果,取決於 <IgnoreValidationErrors> 的設定 (請參閱下文)。如果 <IgnoreValidationErrors> 設為 true,在特定情況下,系統可能會傳回成功回應 (2xx)。

<ClientAuthEnabled>

在 Apigee 和 API 用戶端之間,或在 Apigee 和目標後端之間啟用雙向 TLS (又稱為 mTLS)。

啟用雙向 TLS 通常需要在 Apigee 和信任存放區中設定信任存放區。

<KeyStore> 包含用於外送用戶端驗證的私密金鑰的 KeyStore
<KeyAlias> 您上傳憑證和私密金鑰至 KeyStore 時指定的別名。
<TrustStore> 含有受信任伺服器憑證的金鑰庫。
<IgnoreValidationErrors>

指出系統是否忽略驗證錯誤。如果後端系統使用 SNI,且傳回的憑證主體別名 (DN) 與主機名稱不相符,就無法忽略錯誤,連線也會失敗。

注意:如果將 <Enforce> 設為 true,系統會忽略 <IgnoreValidationErrors> 的值。

<Ciphers>

傳出 TLS/SSL 的支援加密法。如果未指定密碼,系統會允許 JVM 使用的所有密碼。

如要限制密碼編譯器,請新增下列元素,列出支援的密碼編譯器:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
<Protocols>

傳出 TLS/SSL 的支援通訊協定。如果未指定通訊協定,則會允許 JVM 使用的所有通訊協定。

如要限制通訊協定,請明確指定。舉例來說,如要只允許 TLS 1.2 或 TLS 1.3:

<Protocols>
 <Protocol>TLSv1.2</Protocol>
 <Protocol>TLSv1.3</Protocol>
</Protocols>

關於設定 <KeyStore> 和 <TrustStore> 元素

在上述範例中,我們使用參照指定 KeyStore 和 TrustStore,格式如下:

<KeyStore>ref://myKeystoreRef</KeyStore>
<TrustStore>ref://myTruststoreRef</TrustStore>

Apigee 強烈建議您一律使用金鑰庫和信任庫的參照。參照是包含 KeyStore 或 TrustStore 名稱的變數,而非直接指定 KeyStore 名稱。在這個例子中:

  • myKeystoreRef 是包含金鑰庫名稱的參照。在這個範例中,KeyStore 的名稱為 myKeystore
  • myTruststoreRef 是包含信任存放區名稱的參照。在這個範例中,信任存放區的名稱為 myTruststore

憑證到期後,您必須更新目標端點/目標伺服器,指定包含新憑證的金鑰庫或信任庫。參照的優點在於,您可以修改參照的值來變更 KeyStore 或 TrustStore,而無須修改目標端點/目標伺服器本身:

您無須與 Google Cloud Customer Care 聯絡,即可變更參照值。

您也可以直接指定 KeyStore 名稱和 TrustStore 名稱:

<KeyStore>myKeystore</KeyStore>
<TrustStore>myTruststore</TrustStore>

如果您直接指定 KeyStore 或 TrustStore 的名稱,則必須與 Google Cloud 客戶服務聯絡。

第三個選項是使用流程變數:

<KeyStore>{ssl.keystore}</KeyStore>
<TrustStore>{ssl.truststore}</TrustStore>

您可以使用流程變數動態指定 KeyStore 或 TrustStore,效果類似於使用參照。詳情請參閱「 使用流程變數動態設定 TLS/SSL 值」。

關於設定 TLS

所有 Apigee 客戶 (付費和評估) 都能完全控管目標端點/目標伺服器的設定。此外,付費的 Apigee 客戶可完全控管 TLS 屬性。

處理已過期的憑證

如果 TLS 憑證過期,或是系統設定變更導致憑證失效,您就需要更新憑證。為目標端點/目標伺服器設定 TLS 時,請先決定如何執行更新,再進行任何設定。

憑證到期後

在 Apigee 中,您可以將憑證儲存在下列兩個位置之一:

  • Keystore:包含 TLS 憑證和私密金鑰,用於在 TLS 握手期間識別實體。
  • Truststore:包含 TLS 用戶端上的信任憑證,用於驗證向用戶端顯示的 TLS 伺服器憑證。這些憑證通常是自行簽署的憑證、由信任 CA 簽署的憑證,或是用於雙向 TLS (也稱為 mTLS) 的憑證。

如果 KeyStore 中的憑證到期,且您使用了 KeyStore 的參照,就無法將新的憑證上傳至 KeyStore。而是:

  1. 建立新的 KeyStore。
  2. 將新憑證上傳至新 KeyStore,並使用與舊 KeyStore 相同的別名名稱
  3. 更新目標伺服器/目標端點中的參照,以便使用新的 KeyStore。

當信任存放區中的憑證到期,且您使用信任存放區的參照時,您可以:

  1. 建立新的信任存放區。
  2. 將新的憑證上傳至新的信任存放區。別名名稱對信任存放區沒有影響。 注意:如果憑證是鏈結的一部分,您必須建立包含所有憑證的單一檔案,並將該檔案上傳至單一別名,或是為每個憑證使用不同的別名,將鏈結中的所有憑證分別上傳至信任存放區。
  3. 更新目標伺服器/目標端點中的參照,以便使用新的信任存放區。

更新已到期憑證的方法摘要

您在目標端點/目標伺服器中指定金鑰庫和信任存放區名稱的方式,會決定執行憑證更新的方式。例如:

  • 參考資料
  • 直接名稱
  • 流程變數

每種方法對更新程序的影響不同,詳情請參閱下表:

設定類型 如何更新/取代憑證 用量
參考資料 (建議) 針對 KeyStore,請建立具有新名稱的新 KeyStore,並使用與舊別名相同的名稱建立別名。

如要建立信任存放區,請使用新名稱建立信任存放區。

更新對金鑰庫或信任庫的參照。

不需要與 Apigee 支援團隊聯絡。

流程變數 針對 KeyStore,請使用新名稱建立新的 KeyStore,並使用相同名稱或新名稱建立別名。

如要建立信任存放區,請使用新名稱建立信任存放區。

在每個要求中傳遞更新後的流程變數,並附上新 KeyStore、別名或信任存放區的名稱。

不需要與 Apigee 支援團隊聯絡。

直接 建立新的 KeyStore、別名和信任存放區。 重新部署 Proxy。
直接 刪除金鑰庫或信任庫,並使用相同名稱重新建立。 如未設定新的 KeyStore 和別名,API 要求就會失敗。

如果金鑰庫用於 Apigee 和後端服務之間的雙向 TLS (也稱為互相 TLS 或 mTLS),請Google Cloud 客戶服務團隊聯絡,重新啟動訊息處理器。

直接 僅限信任存放區:將新的憑證上傳至信任存放區。 請與 Google Cloud Customer Care 聯絡,重新啟動 Message Processor。