傳輸層安全標準 (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> 含有用於用戶端外送驗證的私密金鑰的金鑰儲存區
<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>

在這個例子中:

  • 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 中,您可以將憑證儲存在下列任一位置:

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

您在目標端點或目標伺服器中指定金鑰儲存區和信任儲存區的方法,會決定如何執行憑證更新。您可以使用參照、直接名稱或流程變數。每種方法對更新程序的影響不同,詳情請參閱下表:

設定類型 如何更新/更換憑證 用量 / 影響
參考 (建議)

金鑰儲存庫:建立新名稱的金鑰儲存庫,並使用與舊別名相同的名稱做為別名。

信任儲存區:建立新名稱的信任儲存區。別名不拘。

更新參照,指向新商店。

無須聯絡 Apigee 支援團隊。全年無休。

流程變數

金鑰儲存庫:建立新名稱的金鑰儲存庫,以及名稱相同或不同的別名。

信任儲存庫:建立新名稱的信任儲存庫。

在每個要求中傳遞更新後的流程變數,並提供新商店的名稱。

無須聯絡 Apigee 支援團隊。全年無休。

直接

方法 1:建立新商店 (建議使用,可避免停機)

建立新名稱的 KeyStore 或 信任儲存庫,並上傳新憑證 (如果是建立 KeyStore,請一併上傳私密金鑰)。

更新目標端點或目標伺服器設定,直接指定新的商店名稱,然後重新部署 API Proxy

無須聯絡 Apigee 支援團隊。

直接

方法 2a:就地更新 (刪除並重新建立)

刪除金鑰儲存區或信任儲存庫,然後使用相同名稱重新建立。

在刪除和重新建立期間,API 要求會失敗。

由於訊息處理器會直接快取指定的商店,因此不會自動偵測更新後的憑證。您必須聯絡 Cloud Customer Care,才能重新啟動訊息處理器。

直接

方法 2b:就地更新 (上傳信任儲存庫)

如果是信任儲存區,可以直接將新憑證上傳至現有信任儲存區。

由於訊息處理器會直接快取指定的商店,因此不會自動偵測新憑證。您必須聯絡 Cloud Customer Care,才能重新啟動訊息處理器。