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

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

本文件概述如何為 Edge 設定 TLS 以執行兩項功能 區域:

  1. 透過 API 用戶端存取您的 API Proxy。在 Edge 上使用虛擬主機 用於設定 TLS 的路由器。
  2. 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 時所修改的虛擬主機區域是由 &lt;SSLInfo&gt; 標記定義。您可以使用 相同的 &lt;SSLInfo&gt; 標記來設定 目標端點或目標伺服器

下表說明 &lt;SSLInfo&gt; 標記使用的 TLS 設定元素:

元素 說明
&lt;Enabled&gt;

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

如為虛擬主機,您必須定義包含憑證和私密金鑰的 KeyStore 鍵。

&lt;ClientAuthEnabled&gt;

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

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

&lt;KeyStore&gt; KeyStore。
&lt;KeyAlias&gt; 您將憑證和私密金鑰上傳到 KeyStore 時指定的別名。
&lt;TrustStore&gt; 信任存放區
&lt;IgnoreValidationErrors&gt;

如果設為 True,Edge 會忽略 TLS 憑證錯誤。為下列使用者設定 TLS 時有效 目標伺服器和目標端點,以及在設定使用雙向連線的虛擬主機時 TLS:預設值為否。

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

&lt;CommonName&gt;

如果有指定,系統會驗證目標憑證共同名稱的值。 這個值僅適用於 TargetEndpoint 和 TargetServer 設定。不 適用於 VirtualHost 設定。

根據預設,指定的值會與目標憑證的常見名稱「完全」比對。 例如,使用 *.myhost.com 做為<CommonName> 的值只會比對符合 驗證目標主機名稱 (如果確切值 *.myhost.com 指定為 目標憑證

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

舉例來說,系統會將目標憑證中指定為「abc.myhost.com」的一般名稱進行比對及驗證 如果<CommonName>元素指定如下:

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

關於設定 &lt;KeyStore&gt;以及 <TrustStore>個元素

在上方的虛擬主機範例中,KeyStore 和 Truststore 是使用 參考資料

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

Apigee 強烈建議您一律使用對 KeyStore 和信任存放區的參照。A 罩杯 參照是包含 KeyStore 或信任儲存庫名稱的變數 請直接指定 KeyStore 名稱在這個例子中:

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

憑證到期後,您必須將虛擬主機或目標端點/目標伺服器更新至 指定包含新憑證的 KeyStore 或 TrustStore。參考檔案的好處是 您可以直接修改參照的值來變更 KeyStore 或信任儲存庫,而不必 修改虛擬主機或目標端點/目標伺服器:

  • Cloud 客戶:變更參考值時不必 以便與 Apigee Edge 支援團隊聯絡。
  • Private Cloud 客戶:變更參考值無法 您必須重新啟動 Edge 元件,例如路由器和訊息處理器。

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

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

如果您直接指定 KeyStore 或信任儲存庫名稱,則 Cloud 客戶必須 與 Apigee Edge 支援團隊聯絡 和私有雲客戶必須重新啟動特定 Edge 元件才能更新憑證。

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

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

流程變數適用於目標端點/目標伺服器,可讓您更新 KeyStore,或 就像參照一樣但不適用於虛擬主機,因此您必須通過 每次要求時取得 KeyStore、別名和信任存放區的資訊。

使用限制 KeyStore 和信任儲存庫的參照

付費 Cloud 客戶和所有設定傳輸層安全標準 (TLS) 的 Private Cloud 客戶都必須考量這一點 使用 KeyStore 和信任儲存庫的參照時會有下列限制:

  • 如果終止 TLS,就只能在虛擬主機中使用 KeyStore 和信任儲存庫參照 流量
  • 如果在 Apigee 路由器的前方設有負載平衡器,且您在 就無法在虛擬主機中使用 KeyStore 和信任儲存庫參照。

如果現有的虛擬主機使用常值 KeyStore 或信任儲存庫名稱

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

  1. 雲端邊緣技術

    如要將虛擬主機變更為使用 KeyStore 參照,您必須使用 Apigee Edge 支援

  2. 私有雲的邊緣

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

    1. 更新虛擬主機即可使用參照。
    2. 重新啟動路由器。
    ,瞭解如何調查及移除這項存取權。 請參閱「修改虛擬主機以使用 KeyStore 和信任儲存庫的參照」一節一節,設定 使用私有雲的 API

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

如果您使用 Cloud 付費 Edge 帳戶,但尚未取得 TLS 憑證和金鑰,請 使用 Apigee 免費試用憑證和金鑰的虛擬主機。這表示您可以建立 不必先建立 KeyStore

一種 XML 物件,會使用 Apigee 免費試用憑證定義虛擬主機,且在這類物件中會省略 <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> 元素的參照來指定信任儲存庫。

請參閱「為 Cloud 設定虛擬主機」一節。 瞭解詳情。

關於設定 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。

信任存放區中的憑證過期時,您會使用 信任 store,您將:

  1. 建立新的信任存放區。
  2. 將新憑證上傳至新的信任存放區。別名名稱對於信任存放區而言無關緊要, 注意:如果憑證是鏈結的一部分,您必須建立單一檔案 並將該檔案上傳至單一別名,或將該檔案 為每個憑證使用不同的別名,以單獨連結至信任存放區。
  3. 更新虛擬主機或目標伺服器/目標端點的參照,以使用新的 信任儲存庫

過期的更新方法摘要 憑證

指定虛擬主機中 KeyStore 和信任儲存庫名稱的方法 或目標端點/目標伺服器會決定憑證更新的方式。例如:

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

這些方法在更新程序中會有不同的影響,如 資料表。如您所見,參考資料為 Cloud 和 私有雲客戶:

設定類型 如何更新/替換憑證 Private Cloud 雲端
參考資料 (建議選項) 針對 KeyStore,以新名稱和別名

針對信任儲存庫,請以新名稱建立信任存放區。

更新 KeyStore 或信任儲存庫的參照。

不需重新啟動路由器或訊息處理器。

更新 KeyStore 或信任儲存庫的參照。

無須與 Apigee 支援團隊聯絡。

流程變異數 (僅限目標端點) 針對 KeyStore,以新名稱和別名 相同的名稱或新名稱

針對信任儲存庫,請以新名稱建立信任存放區。

針對每個要求,使用新 KeyStore、別名或 信任儲存庫

不需重新啟動路由器或訊息處理器。

針對每個要求,使用新 KeyStore、別名或 信任儲存庫

無須與 Apigee 支援團隊聯絡。

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

如果目標端點/目標伺服器使用 Truststore,請重新部署 Proxy。

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

如果目標端點/目標伺服器使用 Truststore,請重新部署 Proxy。

直接 請刪除 KeyStore 或信任儲存庫,並以相同的名稱重新建立金鑰庫。 不必更新虛擬主機,不必重新啟動路由器。不過 API 要求會失敗 直到設定新的 KeyStore 和別名為止

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

不必更新虛擬主機。不過,到新的 KeyStore 和 別名已設定完成。

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

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

如果目標端點/目標伺服器使用 Truststore,請重新啟動訊息 處理器:

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

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