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

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

本文件概略說明如何在 Edge 上設定 TLS,以便用於以下兩個功能領域:

  1. API 用戶端存取 API Proxy。在 Edge Router 上使用虛擬主機設定 TLS。
  2. Edge 可存取您的後端服務。使用 Edge Message Processor 上的目標端點和目標伺服器設定 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> KeyStore。
<KeyAlias> 您上傳憑證和私密金鑰至 KeyStore 時指定的別名。
<TrustStore> 信任儲存庫。
<IgnoreValidationErrors>

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

與目標端點/目標伺服器搭配使用時,如果後端系統使用 SNI,且傳回的憑證主體別名 (DN) 與主機名稱不符,就無法忽略錯誤,連線也會失敗。

<CommonName>

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

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

您可以選擇使用 wildcardMatch 屬性,讓 Apigee 使用萬用字元進行比對。

舉例來說,如果 <CommonName> 元素指定如下,則在目標憑證中指定為 abc.myhost.com 的常見名稱會進行比對和驗證:

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

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

在上述虛擬主機範例中,系統會使用參照指定 KeyStore 和 TrustStore,格式如下:

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

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

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

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

  • 適用於 Cloud 客戶:您無須聯絡 Apigee Edge 支援團隊,即可變更參照值。
  • 私有雲端客戶:變更參照的值時,不必重新啟動 Router 和 Message Processor 等 Edge 元件。

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

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

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

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

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

流程變數適用於目標端點/目標伺服器,可讓您更新參照的 KeyStore 或 TrustStore。不過,這些方法無法與虛擬主機搭配使用,且要求您在每次要求中傳遞金鑰庫、別名和信任金鑰庫的相關資訊。

使用金鑰庫和信任存放區參照項目的限制

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

  • 只有在 Apigee Router 上終止 TLS 時,您才能在虛擬主機中使用金鑰庫和信任庫參照。
  • 如果 Apigee Router 前端有負載平衡器,且您在負載平衡器上終止 TLS,則無法在虛擬主機中使用 KeyStore 和 TrustStore 參照。

如果現有的虛擬主機使用文字金鑰庫或信任庫名稱

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

  1. Edge for the Cloud

    如要變更虛擬主機,以便使用 KeyStore 的參照,您必須與 Apigee Edge 支援團隊合作。

  2. Private Cloud 適用的 Edge

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

    1. 更新虛擬主機,以便使用參照。
    2. 重新啟動路由器。
    如需更多資訊,請參閱「設定私有雲端的 TLS 存取權以存取 API」一文中的「修改虛擬主機以使用金鑰庫和信任庫的參照」。

關於使用 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 客戶嗎?
  • 您如何更新已過期或即將到期的憑證?

雲端和私有雲設定選項

下表列出 Cloud 和 Private Cloud 客戶可用的不同設定選項:

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

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

所有 Cloud 客戶 (付費和試用) 都能完全控管目標端點/目標伺服器的設定。此外,付費的 Cloud 客戶可完全控管虛擬主機,包括 TLS 屬性。

處理已過期的憑證

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

憑證到期後

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

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

如果 KeyStore 中的憑證到期,且您使用了 KeyStore 的參照,就無法將新的憑證上傳至 KeyStore。請改為採取以下做法:

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

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

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

更新到期憑證的方法摘要

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

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

每種方法對更新程序的影響各不相同,詳情請見下表。如您所見,參照資料可為 Cloud 和 Private Cloud 客戶提供最大的彈性:

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

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

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

無須重新啟動 Router 或 Message Processor。

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

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

流程變數 (僅限目標端點) 針對 KeyStore,請使用新名稱建立新的 KeyStore,並使用相同名稱或新名稱建立別名。

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

在每個要求中傳遞更新的流程變數,並附上新的 KeyStore、別名或 TrustStore 名稱。

無須重新啟動 Router 或 Message Processor。

在每個要求中傳遞更新的流程變數,並附上新的 KeyStore、別名或 TrustStore 名稱。

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

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

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

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

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

直接 刪除金鑰庫或信任庫,並使用相同名稱重新建立。 不需要更新虛擬主機,也不需要重新啟動路由器。不過,必須先設定新的 KeyStore 和別名,API 要求才能成功。

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

不需要更新虛擬主機。不過,必須先設定新的 KeyStore 和別名,API 要求才能成功。

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

直接 僅限信任存放區:將新的憑證上傳至信任存放區。 如果虛擬主機使用信任存放區,請重新啟動路由器。

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

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

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