設定從邊緣至後端的傳輸層安全標準 (TLS) (雲端和私有雲)

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

API Proxy 的作用是將公開可用的端點對應至後端服務。 虛擬主機會定義公開的 API Proxy 對應用程式公開的方式。適用對象 舉例來說,虛擬主機會決定使用 TLS 能否存取 API Proxy。當您 設定 API Proxy,編輯其 ProxyEndpoint 定義,設定其所在的虛擬主機 使用方式。

TargetEndpoint 相當於 ProxyEndpoint 的傳出。TargetEndpoint 函式 做為 HTTP 用戶端建立 API Proxy 時 使用零個或多個 Target Endpoints

瞭解詳情:

設定 TargetEndpoint 或 TargetServer

如要設定 TargetEndpoint,請編輯定義 TargetEndpoint 的 XML 物件。你可以 編輯在 中定義 TargetEndpoint 的 XML 檔案,以編輯 TargetEndpoint API Proxy,或在 Edge Management UI 中編輯。

如要使用 Edge Management UI 編輯 TargetEndpoint,請按照下列步驟操作:

  1. 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
  2. 選取要更新的 API Proxy 名稱。
  3. 選取「開發」分頁標籤。
  4. 在「目標端點」下方,選取「預設」
  5. 在程式碼區域中,會出現 TargetEndpoint 定義,與以下類似:
    <TargetEndpoint name="default">
      <Description/>
      <FaultRules/>
      <Flows/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <HTTPTargetConnection>
        <Properties/>
        <SSLInfo>
          <Enabled>true</Enabled>
          <TrustStore>ref://myTrustStoreRef</TrustStore>
        </SSLInfo>
        <URL>https://mocktarget.apigee.net</URL>
      </HTTPTargetConnection>
    </TargetEndpoint>
  6. 按照下方說明設定信任儲存庫 關於後端的 TLS 設定
  7. 進行變更並儲存 Proxy。如果已部署 API Proxy,請儲存 以新的設定重新部署該叢集。

請注意,TargetEndpoint 定義包含 name 屬性。請使用 name 屬性 設定 API Proxy 的 ProxyEndpoint 定義,以使用 TargetEndpoint, 詳情請參閱 API Proxy 設定參考資料

您可以將 Target Endpoints 設定為參照 TargetServer,而非直接參照 目標網址TargetServer 設定可將具體端點網址從 TargetEndpoint 設定。TargetServers 可用來支援負載平衡和容錯移轉 還能跨越多個後端伺服器執行個體 調度資源

以下為 TargetServer 定義範例:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer> 

目標伺服器在 <HTTPTargetConnection> 中以名稱參照 元素中。 您可以設定一或多個已命名的 TargetServers,如下所示。

<TargetEndpoint name="default">
  ...
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
  ...
</TargetEndpoint>

請參閱負載平衡 跨後端伺服器執行各種作業

關於後端的 TLS 設定

設定後端的 TLS 存取權之前,您應該先瞭解 分數:

  1. 根據預設,Edge 不會驗證後端憑證。必須建立信任儲存庫才能設定 用於驗證憑證的邊緣。
  2. 使用參照來指定 Edge 使用的 KeyStore 或信任儲存庫。

下文將說明這兩種注意事項。

定義信任儲存庫以啟用憑證驗證功能

透過 TargetEndpoint 或 TargetServer 提出 TLS 要求時,Edge 不會 預設會驗證從後端伺服器收到的 TLS 憑證。 這表示 Edge「不會驗證」是否符合以下條件:

  • 憑證已由信任的 CA 簽署。
  • 憑證並未過期。
  • 憑證具有通用名稱。如果有共同的名稱,Edge 就不會驗證 一般名稱與網址中指定的主機名稱相符

如要設定 Edge 以驗證後端憑證,您必須:

  1. 在 Edge 上建立信任儲存庫。
  2. 將伺服器的憑證或憑證鏈結上傳至信任存放區。 如果伺服器憑證是由第三方簽署,您就必須將 完整的憑證鏈結 (包括根 CA 憑證) 到信任存放區。 沒有隱含信任的 CA。
  3. 將信任儲存庫新增至 TargetEndpoint 或 TargetServer 定義。
,瞭解如何調查及移除這項存取權。

詳情請參閱「Keystores 和 Truststore」。

例如:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

使用參照 連線至 KeyStore 或信任存放區

下列範例說明如何設定 TargetEndpoint 或 TargetServer,以 。設定 TLS 時,您會指定 Truststore 和 KeyStore TargetEndpoint 或 TargetServer 定義。

Apigee 強烈建議您採用對 KeyStore 的參照 目標端點或 TargetServer 定義中的信任存放區。使用參照的優點 您只需要更新參照即可指向不同的 KeyStore 或信任存放區 更新 TLS 憑證

對位於 的 KeyStore 和信任存放區的參照 TargetEndpoint 或 TargetServer 定義的運作方式與 適用於虛擬主機

轉換 TargetEndpoint 或 TargetServer 以使用參照

您可能現有的 TargetEndpoint 或 TargetServer 定義, 會使用 KeyStore 和信任儲存庫的常值名稱。轉換 TargetEndpoint 或 TargetServer 定義,以使用參照:

  1. 更新 TargetEndpoint 或 TargetServer 定義,以使用參照。
  2. 重新啟動邊緣訊息處理器:
    • 如果是公用雲端客戶,請與 Apigee Edge 支援團隊聯絡,重新啟動訊息處理器。
    • 如果是 Private Cloud 客戶,請重新啟動邊緣訊息處理器一 逐步完成任務。
  3. 確認您的 TargetEndpoint 或 TargetServer 運作正常。

設定傳送至後端的單向 TLS 伺服器

使用 TargetEndpoint 定義時,設定從 Edge (TLS 用戶端) 的單向 TLS 存取 並不需要在 Edge 上進行額外設定。是 ,才能正確設定 TLS。

您只需要確認 <URL> 元素中的 TargetEndpoint 定義透過 HTTPS 通訊協定參照後端服務,而您 啟用 TLS:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

如果您使用 TargetServer 定義後端服務,請啟用 TLS TargetServer 定義中:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer> 

不過,如果想讓 Edge 驗證後端憑證,您必須建立信任儲存庫 ,當中包含後端憑證或憑證鏈結。接著您需要在 Cloud Shell 中 TargetEndpoint 定義:

<TargetEndpoint name="default">
  …
  <HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
      <TrustStore>ref://myTrustStoreRef</TrustStore>
    </SSLInfo>
    <URL>https://myservice.com</URL>
  </HTTPTargetConnection>
  …
</TargetEndpoint>

或是在 TargetServer 定義中:

<TargetServer name="target1">
  <Host>mockserver.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
    <Enabled>true</Enabled>
    <TrustStore>ref://myTrustStoreRef</TrustStore>
  </SSLInfo> 
</TargetServer>

如何設定單向 TLS:

  1. 如要驗證後端憑證,請在 Edge 上建立信任存放區,然後上傳 將後端憑證或 CA 鏈結 Keystores 和 Truststore。 在本例中,如需建立信任儲存庫,請為其命名 myTrustStore)。
  2. 如果您已建立信任儲存庫,請使用下列 POST API 呼叫來建立 將名為 myTrustStoreRef 的參照連結至您建立的信任存放區 以上:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
      -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
      </ResourceReference>' -u email:password
    
  3. 使用 Edge 管理 UI 更新 API Proxy 的 TargetEndpoint 定義 (或者 若您在 XML 中定義 API Proxy,請編輯該 Proxy 的 XML 檔案:
    1. 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
    2. 在 Edge 管理 UI 選單中,選取「API」
    3. 選取要更新的 API Proxy 名稱。
    4. 選取「開發」分頁標籤。
    5. 在「目標端點」下方,選取「預設」
    6. 在程式碼區域中編輯 <HTTPTargetConnection> 元素,以便: 新增 <SSLInfo> 元素。 請務必指定正確的 Truststore 參照,並將 <Enabled> 設為 true:
      <TargetEndpoint name="default">
        …
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <TrustStore>ref://myTrustStoreRef</TrustStore>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        …
      </TargetEndpoint>
    7. 儲存 API Proxy。如果 API Proxy 已部署完成,請儲存該 Proxy,以及使用 新的設定。

設定後端的雙向 TLS 伺服器

如要在 Edge (TLS 用戶端) 和後端伺服器 (TLS) 之間支援雙向 TLS 伺服器):

  • 在 Edge 上建立 KeyStore,並上傳 Edge 憑證和私密金鑰。
  • 如要驗證後端憑證,請在 Edge 上建立含有 您從後端伺服器收到的憑證和 CA 鏈結。
  • 針對參照後端伺服器以設定的所有 API Proxy 更新 TargetEndpoint 傳輸層安全標準 (TLS) 存取權。
,瞭解如何調查及移除這項存取權。

使用金鑰別名指定 KeyStore 憑證

您可以在同一個 KeyStore 中定義多個憑證,每個憑證都有各自的別名。 根據預設,Edge 會使用 KeyStore 中定義的第一個憑證。

或者,您也可以將 Edge 設定為使用 <KeyAlias> 屬性指定的憑證。 這樣就能為多個憑證定義單一 KeyStore,然後 選取您要在 TargetServer 定義中使用的項目。如果 Edge 找不到具有別名的憑證 比對符合 <KeyAlias> 時,就會使用選取 擷取第一個憑證

公有雲使用者須聯絡 Apigee Edge 支援,才能啟用這項功能。

設定雙向 TLS

如何設定雙向 TLS:

  1. 按照步驟在 Edge 上建立 KeyStore,並上傳憑證和私密金鑰 所述:Keystores 和 Truststores。 在這個範例中,請建立名為 myTestKeystore 的 KeyStore,並使用 憑證和私密金鑰的 myKey 別名名稱。
  2. 請使用下列 POST API 呼叫建立參照 名稱為 myKeyStoreRef,移至您在上述步驟中建立的 KeyStore:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myKeyStoreRef">
        <Refers>myTestKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    

    參考資料將 KeyStore 名稱和參照類型指定為 KeyStore

    請使用下列 GET API 呼叫查看參考資源:

    curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef /
    -u email:password
    
  3. 如要驗證後端憑證,請在 Edge 上建立信任存放區,然後上傳憑證和 CA 如「Keystores 和 Truststore」中所述。 在這個範例中,您必須建立信任存放區並命名為 myTrustStore
  4. 如果您已建立信任儲存庫,請使用下列 POST API 呼叫來建立 將名為 myTrustStoreRef 的參照連結至您建立的信任存放區 以上:

    curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
    -d '<ResourceReference name="myTrustStoreRef">
        <Refers>myTrustKeystore</Refers>
        <ResourceType>KeyStore</ResourceType>
    </ResourceReference>' -u email:password
    
  5. 使用 Edge 管理 UI 更新 API Proxy 的 TargetEndpoint 定義 (或者 若您在 XML 中定義 API Proxy,請編輯該 Proxy 的 XML 檔案:
    1. 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
    2. 在 Edge 管理 UI 選單中,選取「API」
    3. 選取要更新的 API Proxy 名稱。
    4. 選取「開發」分頁標籤。
    5. 在「目標端點」下方,選取「預設」
    6. 在程式碼區域中編輯 <HTTPTargetConnection> 元素,以便: 新增<SSLInfo> 元素。請務必指定正確的 KeyStore 和金鑰別名,並同時設定 將 <Enabled><ClientAuthEnabled> 元素設為 true:
      <TargetEndpoint name="default">
        ...
        <HTTPTargetConnection>
          <SSLInfo>
            <Enabled>true</Enabled>
            <ClientAuthEnabled>true</ClientAuthEnabled>
            <KeyStore>ref://myKeyStoreRef</KeyStore>
            <KeyAlias>myKey</KeyAlias>
          </SSLInfo>
          <URL>https://myservice.com</URL>
        </HTTPTargetConnection>
        ...
      </TargetEndpoint>
    7. 儲存 API Proxy。如果 API Proxy 已部署完成,請儲存該 Proxy,以及使用 新的設定。

如要進一步瞭解 <TargetEndpoint> 中的可用選項,包括使用變數 如要提供 TargetEndpoint <SSLInfo> 值,請參閱 API Proxy 設定參考資料

啟用 SNI

Edge 支援在訊息處理器中使用伺服器名稱指示 (SNI) 來鎖定目標時 適用於 Cloud 和私有雲部署作業的 Apigee Edge 端點。

為了讓 Private Cloud 具備回溯相容性,以便與現有目標後端回溯相容 Apigee 預設會停用 SNI。如果目標後端設為支援 SNI, 即可啟用這項功能詳情請參閱將 SNI 與 Edge 搭配使用