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

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

本文將概要說明如何在 Edge 上設定 TLS,涵蓋以下兩個功能領域:

  1. API 用戶端存取 API Proxy。在 Edge 路由器上使用虛擬主機設定 TLS。
  2. Edge 存取後端服務。使用 Edge 訊息處理器上的目標端點和目標伺服器設定 TLS。

這兩種存取類型如下所示:

關於在虛擬主機或目標端點/目標伺服器中設定 TLS 選項

虛擬主機可以 XML 物件表示,格式如下:

<VirtualHost name="secure">
    ...
    <SSLInfo> 
        <Enabled>true</Enabled> 
        <ClientAuthEnabled>true</ClientAuthEnabled> 
        <KeyStore>ref://myKeystoreRef</KeyStore> 
        <KeyAlias>myKeyAlias</KeyAlias> 
        <TrustStore>ref://myTruststoreRef</TrustStore> 
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
    </SSLInfo>
</VirtualHost>

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

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

元素 說明
<Enabled>

在 Edge 和 API 用戶端之間,或在 Edge 和目標後端之間啟用單向 TLS。

如果是虛擬主機,您必須定義含有憑證和私密金鑰的 KeyStore。

<ClientAuthEnabled>

在 Edge 與 API 用戶端之間,或在 Edge 與目標後端之間啟用雙向 TLS。

啟用雙向 TLS 通常需要在 Edge 上設定信任儲存區。

<KeyStore> 金鑰儲存區。
<KeyAlias> 將憑證和私密金鑰上傳至金鑰儲存區時指定的別名。
<TrustStore> 信任儲存庫。
<IgnoreValidationErrors>

如果設為 true,Edge 會忽略 TLS 憑證錯誤。設定目標伺服器和目標端點的 TLS 時,以及設定使用雙向 TLS 的虛擬主機時,這項設定有效。預設值為否。

如果後端系統使用 SNI,並傳回主體識別名稱 (DN) 與主機名稱不符的憑證,則無法忽略錯誤,連線會失敗。

<CommonName>

如果指定,則為驗證目標憑證通用名稱的值。這個值僅適用於 TargetEndpoint 和 TargetServer 設定。不適用於 VirtualHost 設定。

根據預設,指定的值會與目標憑證的通用名稱完全相符。 舉例來說,如果將 *.myhost.com 做為 <CommonName> 的值,只有在目標憑證中將確切值 *.myhost.com 指定為通用名稱時,系統才會比對並驗證目標主機名稱。

或者,Apigee 可以使用 wildcardMatch 屬性,透過萬用字元執行比對。

舉例來說,如果 <CommonName> 元素指定如下: abc.myhost.com

<CommonName wildcardMatch="true">*.myhost.com</CommonName>

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

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

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

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

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

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

  • Cloud 客戶:變更參照的值不需要聯絡 Apigee Edge 支援團隊
  • 私有雲客戶:變更參照值不需要重新啟動 Edge 元件,例如路由器和訊息處理器。

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

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

如果您直接指定金鑰儲存區或信任儲存區的名稱,則 Cloud 客戶必須與 Apigee Edge 支援團隊聯絡,Private Cloud 客戶則必須重新啟動特定 Edge 元件,才能更新憑證。

第三個選項 (僅適用於目標端點/目標伺服器) 是使用流程變數:

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

流程變數適用於目標端點/目標伺服器,可讓您更新金鑰儲存區或信任儲存區,例如參照。不過,這些方法不適用於虛擬主機,而且您必須在每個要求中傳遞金鑰儲存區、別名和信任儲存區的相關資訊。

使用金鑰儲存區和信任儲存區參照時的限制

付費 Cloud 客戶和所有設定 TLS 的 Private Cloud 客戶,在使用金鑰儲存區和信任儲存區的參照時,必須考量下列限制:

  • 只有在 Apigee Router 上終止 TLS 時,才能在虛擬主機中使用金鑰儲存區和信任儲存區參照。
  • 如果您在 Apigee Router 前方有負載平衡器,並在負載平衡器上終止 TLS,就無法在虛擬主機中使用金鑰儲存區和信任儲存區參照。

如果現有的虛擬主機使用字面意義的 Keystore 或 Truststore 名稱

Edge 上現有的虛擬主機可能未設定為使用金鑰儲存區和信任儲存區的參照。在這種情況下,您可以更新虛擬主機,改用參照。

  1. 雲端邊緣

    如要變更虛擬主機,改為使用 KeyStore 的參照,請與 Apigee Edge 支援團隊聯絡。

  2. Edge for Private Cloud

    如要轉換虛擬主機以使用參照,請按照下列步驟操作:

    1. 更新虛擬主機以使用參照。
    2. 重新啟動路由器。
    詳情請參閱「為私有雲設定 API 的 TLS 存取權」一文中的「修改虛擬主機,以使用金鑰儲存區和信任儲存區的參照」。

關於使用 Apigee 免費試用憑證和金鑰

如果您有 Edge for Cloud 付費帳戶,但還沒有 TLS 憑證和金鑰,可以建立使用 Apigee 免費試用憑證和金鑰的虛擬主機。也就是說,您不必先建立金鑰儲存區,即可建立虛擬主機。

使用 Apigee 免費試用版憑證和金鑰定義虛擬主機的 XML 物件會省略 <KeyStore><KeyAlias> 元素,並以 <UseBuiltInFreeTrialCert> 元素取代,如下所示:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>myapi.apigee.net</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
    </SSLInfo>
    <UseBuiltInFreeTrialCert>true</UseBuiltInFreeTrialCert>
</VirtualHost>

如果您要執行雙向傳輸層安全標準:TLS,仍須將 <ClientAuthEnabled> 元素設為 true,並使用 <TrustStore> 元素搭配參照指定信任儲存庫。

詳情請參閱「設定雲端的虛擬主機」。

關於設定 TLS

TLS 設定方式取決於兩個主要因素:

  • 您是 Edge Cloud 或 Private Cloud 客戶嗎?
  • 您打算如何更新過期或即將到期的憑證?

雲端和私有雲設定選項

下表列出雲端和私有雲客戶的不同設定選項:

Private Cloud 雲端
虛擬主機 完全掌控 僅限付費帳戶可完全控管
目標端點/目標伺服器 完全掌控 完全掌控

私有雲客戶可完全控管虛擬主機和目標端點/目標伺服器的設定。包括建立及刪除虛擬主機,以及設定虛擬主機上的所有屬性。

無論是付費或評估客戶,所有 Cloud 客戶都能完全控管目標端點/目標伺服器的設定。此外,付費 Cloud 客戶可完全控管虛擬主機,包括 TLS 屬性。

處理過期的憑證

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

憑證到期時

在 Edge 中,憑證會儲存在下列其中一個位置:

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

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

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

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

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

更新過期憑證的方法摘要

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

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

這些方法對更新程序有不同的影響,詳見下表。如您所見,參照可為 Cloud 和 Private Cloud 客戶提供最大的彈性:

設定類型 如何更新/更換憑證 Private Cloud 雲端
參考 (建議) 如果是金鑰儲存庫,請建立新名稱的金鑰儲存庫,並使用與舊別名相同名稱的別名。

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

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

無須重新啟動路由器或訊息處理器。

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

無須聯絡 Apigee 支援團隊。

流程變數 (僅限目標端點) 如果是金鑰儲存庫,請重新命名並建立新金鑰儲存庫,別名則可沿用或重新命名。

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

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

無須重新啟動路由器或訊息處理器。

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

無須聯絡 Apigee 支援團隊。

直接 建立新的 KeyStore、別名和 TrustStore。 更新虛擬主機並重新啟動路由器。

如果目標端點/目標伺服器使用信任儲存區,請重新部署 Proxy。

如果是虛擬主機,請Apigee Edge 支援團隊聯絡,重新啟動路由器。

如果目標端點/目標伺服器使用信任儲存區,請重新部署 Proxy。

直接 刪除金鑰儲存區或信任儲存庫,然後使用相同名稱重新建立。 無須更新虛擬主機,也不必重新啟動路由器。不過,您必須先設定新的金鑰存放區和別名,API 要求才會成功。

如果金鑰儲存區用於 Edge 與後端服務之間的雙向 TLS,請重新啟動訊息處理器。

無須更新虛擬主機。不過,您必須先設定新的金鑰存放區和別名,API 要求才會成功。

如果金鑰儲存區用於 Edge 與後端服務之間的雙向 TLS,請Apigee Edge 支援團隊聯絡,重新啟動訊息處理器。

直接 如果是信任儲存區,請將新憑證上傳至信任儲存庫。 如果虛擬主機使用信任儲存區,請重新啟動路由器。

如果目標端點/目標伺服器使用信任儲存區,請重新啟動訊息處理器。

如果是虛擬主機,請Apigee Edge 支援團隊聯絡,要求重新啟動 Edge Router。

如果目標端點/目標伺服器使用信任儲存區,請Apigee Edge 支援團隊聯絡,重新啟動訊息處理器。