傳輸層安全標準 (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 configuration」。

下表說明 <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 (又稱雙向 TLS 或 mTLS)。

如要啟用雙向傳輸層安全標準 (TLS),通常需要在 Apigee 和信任儲存區中設定信任儲存區。

<KeyStore> 含有私密金鑰的 KeyStore,用於外送用戶端驗證
<KeyAlias> 將憑證和私密金鑰上傳至金鑰儲存區時指定的別名。
<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 v1.2 或 TLS v1.3:

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

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

在上述範例中,KeyStore 和 TrustStore 是以參照形式指定,格式如下:

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

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

  • myKeystoreRef 是包含金鑰儲存區名稱的參照。在本例中,金鑰儲存區的名稱為 myKeystore
  • myTruststoreRef 是包含信任儲存區名稱的參照。在本範例中,信任儲存區的名稱為 myTruststore

憑證過期時,您必須更新目標端點/目標伺服器,指定含有新憑證的金鑰儲存區或信任儲存區。參照的優點是,您可以修改參照的值來變更金鑰儲存區或信任儲存區,而不必修改目標端點/目標伺服器本身:

變更參照值時,您不需要與 Google Cloud Customer Care 聯絡。

或者,您也可以直接指定金鑰儲存區名稱和信任儲存區名稱:

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

如果您直接指定金鑰儲存區或信任儲存區的名稱,則必須與 Google Cloud 客戶服務聯絡。

第三種做法是使用流程變數:

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

您可以使用流程變數動態指定金鑰儲存區或信任儲存區,效果與使用參照類似。詳情請參閱「 使用流程變數動態設定 TLS/SSL 值」。

關於設定 TLS

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

處理過期的憑證

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

憑證到期時

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

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

如果金鑰儲存區中的憑證到期,且您使用金鑰儲存區的參照,就無法將新憑證上傳至金鑰儲存區。而是:

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

當信任儲存區中的憑證過期,且您使用對信任儲存區的參照時,會發生下列情況:

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

更新到期憑證的方法摘要

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

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

這些方法對更新程序的影響各不相同,詳情請參閱下表:

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

如果是信任儲存區,請建立新名稱的信任儲存區。

更新對金鑰儲存區或信任儲存區的參照。

無須聯絡 Apigee 支援團隊。

流程變數 如果是 KeyStore,請建立新名稱的 KeyStore,以及名稱相同或不同的別名。

如果是信任儲存區,請建立新名稱的信任儲存區。

在每個要求中傳遞更新後的流程變數,並提供新的金鑰儲存庫、別名或信任儲存庫名稱。

無須聯絡 Apigee 支援團隊。

直接 建立新的 KeyStore、別名和 TrustStore。 重新部署 Proxy。
直接 刪除金鑰儲存區或信任儲存區,然後使用相同名稱重新建立。 您必須設定新的金鑰存放區和別名,API 要求才會成功。

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

直接 如果是信任儲存區,請將新憑證上傳至信任儲存區。 請與 Google Cloud 客服團隊聯絡,重新啟動 Message Processor。