您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
API Proxy 的功能是將公開端點對應至後端服務。虛擬主機會定義向應用程式公開 API Proxy 的方式。舉例來說,虛擬主機會決定是否能使用 TLS 存取 API Proxy。設定 API Proxy 時,請編輯 ProxyEndpoint 定義,設定 Proxy 使用的虛擬主機。
TargetEndpoint 是 ProxyEndpoint 的出站對應項目。TargetEndpoint 會做為 Edge 到後端服務的 HTTP 用戶端。建立 API Proxy 時,您可以將其設定為使用零或多個 TargetEndpoint。
瞭解詳情:
設定 TargetEndpoint 或 TargetServer
如要設定 TargetEndpoint,請編輯定義 TargetEndpoint 的 XML 物件。如要編輯 TargetEndpoint,請編輯 API Proxy 中定義 TargetEndpoint 的 XML 檔案,或在 Edge 管理使用者介面中編輯。
如要使用 Edge 管理 UI 編輯 TargetEndpoint,請按照下列步驟操作:
- 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
- 選取要更新的 API Proxy 名稱。
- 選取「開發」分頁標籤。
- 在「目標端點」下方,選取「預設」。
- 程式碼區域會顯示 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> - 請按照「關於後端的 TLS 設定」一節的說明,設定信任儲存區。
- 進行變更並儲存 Proxy。如果 API Proxy 已部署,儲存後會以新設定重新部署。
請注意,TargetEndpoint 定義包含 name 屬性。您可以使用 name 屬性的值,設定 API Proxy 的 ProxyEndpoint 定義,以使用 TargetEndpoint。詳情請參閱 API Proxy 設定參考資料。
您可以設定 TargetEndpoint 參照 TargetServer,而非明確的目標網址。TargetServer 設定會將具體端點網址與 TargetEndpoint 設定分離。TargetServer 可用於支援多個後端伺服器執行個體之間的負載平衡和容錯移轉。
以下是 TargetServer 定義範例:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
TargetServer 會在 TargetEndpoint 定義的 <HTTPTargetConnection> 元素中依名稱參照。您可以設定一或多個具名 TargetServer,如下所示。
<TargetEndpoint name="default">
...
<HTTPTargetConnection>
<LoadBalancer>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
<Path>/test</Path>
</HTTPTargetConnection>
...
</TargetEndpoint>詳情請參閱跨後端伺服器負載平衡。
關於後端的 TLS 設定
設定後端的 TLS 存取權之前,請先瞭解兩項重要事項:
- 根據預設,Edge 不會驗證後端憑證。您必須建立信任儲存庫,才能設定 Edge 驗證憑證。
- 使用參照指定 Edge 使用的 KeyStore 或 TrustStore。
以下將說明這兩項考量。
定義信任儲存區,啟用憑證驗證
透過 TargetEndpoint 或 TargetServer 發出 TLS 要求時,Edge 預設不會 驗證從後端伺服器收到的 TLS 憑證。 也就是說,Edge 不會驗證下列項目:
- 憑證已由信任的 CA 簽署。
- 憑證尚未過期。
- 憑證會顯示一般名稱。如果存在一般名稱,Edge 不會驗證一般名稱是否與網址中指定的主機名稱相符。
如要設定 Edge 驗證後端憑證,請完成下列步驟:
- 在 Edge 上建立信任儲存區。
- 將伺服器的憑證或憑證鏈結上傳至信任儲存區。 如果伺服器憑證是由第三方簽署,您必須將完整憑證鏈結 (包括根 CA 憑證) 上傳至信任儲存庫。沒有隱含信任的 CA。
- 將信任儲存區新增至 TargetEndpoint 或 TargetServer 定義。
詳情請參閱「金鑰儲存區和信任儲存區」。
例如:
<TargetEndpoint name="default">
…
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<TrustStore>ref://myTrustStoreRef</TrustStore>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
…
</TargetEndpoint>使用對金鑰儲存區或信任儲存區的參照
以下範例說明如何設定 TargetEndpoint 或 TargetServer,以支援 TLS。設定 TLS 時,您會指定信任儲存區和金鑰儲存區,做為 TargetEndpoint 或 TargetServer 定義的一部分。
Apigee 強烈建議您在 TargetEndpoints 或 TargetServer 定義中,使用金鑰儲存區和信任儲存區的參照。使用參照的優點是,您只需要更新參照,指向其他金鑰儲存區或信任儲存區,即可更新 TLS 憑證。
TargetEndpoints 或 TargetServer 定義中對 KeyStore 和 TrustStore 的參照,與虛擬主機的參照方式相同。
將 TargetEndpoint 或 TargetServer 轉換為使用參照
您可能已有 TargetEndpoint 或 TargetServer 定義,其中使用金鑰儲存區和信任儲存區的常值名稱。如要轉換 TargetEndpoint 或 TargetServer 定義以使用參照,請按照下列步驟操作:
- 更新 TargetEndpoint 或 TargetServer 定義,以使用參照。
- 重新啟動 Edge 訊息處理器:
- 公有雲客戶請與 Apigee Edge 支援團隊聯絡,重新啟動訊息處理器。
- 私有雲客戶請一次重新啟動一個 Edge 訊息處理器。
- 確認 TargetEndpoint 或 TargetServer 運作正常。
設定後端伺服器的單向 TLS
使用 TargetEndpoint 定義時,從 Edge (TLS 用戶端) 設定單向 TLS 存取權至後端伺服器 (TLS 伺服器),不需要在 Edge 上進行任何額外設定。後端伺服器必須正確設定 TLS。
您只需要確保 TargetEndpoint 定義中的 <URL> 元素會透過 HTTPS 通訊協定參照後端服務,並啟用 TLS:
<TargetEndpoint name="default">
…
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
…
</TargetEndpoint>如果您使用 TargetServer 定義後端服務,請在 TargetServer 定義中啟用 TLS:
<TargetServer name="target1">
<Host>mocktarget.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer> 不過,如要讓 Edge 驗證後端憑證,就必須建立包含後端憑證或憑證鏈的信任儲存區。接著,您可以在 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,請按照下列步驟操作:
- 如要驗證後端憑證,請在 Edge 上建立信任儲存區,然後按照「金鑰儲存區和信任儲存區」一文的說明,上傳後端憑證或 CA 鏈結。 以這個範例來說,如果必須建立信任儲存庫,請將其命名為「myTrustStore」myTrustStore。
-
如果您已建立信任儲存區,請使用下列 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 - 使用 Edge 管理 UI 更新 API Proxy 的 TargetEndpoint 定義 (或編輯 Proxy 的 XML 檔案,前提是您以 XML 定義 API Proxy):
- 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
- 在 Edge 管理 UI 選單中,選取「API」。
- 選取要更新的 API Proxy 名稱。
- 選取「開發」分頁標籤。
- 在「目標端點」下方,選取「預設」。
- 在程式碼區域中,編輯
<HTTPTargetConnection>元素,加入<SSLInfo>元素。請務必指定正確的信任儲存區參照,並將<Enabled>設為 true:<TargetEndpoint name="default"> … <HTTPTargetConnection> <SSLInfo> <Enabled>true</Enabled> <TrustStore>ref://myTrustStoreRef</TrustStore> </SSLInfo> <URL>https://myservice.com</URL> </HTTPTargetConnection> … </TargetEndpoint> - 儲存 API Proxy。如果 API Proxy 已部署,儲存後會以新設定重新部署。
設定後端伺服器的雙向 TLS
如要在 Edge (TLS 用戶端) 和後端伺服器 (TLS 伺服器) 之間支援雙向 TLS:
- 在 Edge 上建立 KeyStore,並上傳 Edge 憑證和私密金鑰。
- 如要驗證後端憑證,請在 Edge 上建立信任儲存庫,其中包含您從後端伺服器收到的憑證和 CA 鏈結。
- 更新參照後端伺服器的所有 API Proxy 的 TargetEndpoint,以設定 TLS 存取權。
使用金鑰別名指定 KeyStore 憑證
您可以在同一個金鑰儲存區中定義多個憑證,每個憑證都有自己的別名。根據預設,Edge 會使用金鑰儲存區中定義的第一個憑證。
您可以選擇設定 Edge,使用 <KeyAlias> 屬性指定的憑證。這樣一來,您就能為多個憑證定義單一金鑰儲存區,然後在 TargetServer 定義中選取要使用的憑證。如果 Edge 找不到別名與 <KeyAlias> 相符的憑證,就會使用預設動作,選取金鑰儲存區中的第一個憑證。
Public Cloud 版 Edge 使用者必須與 Apigee Edge 支援團隊聯絡,才能啟用這項功能。
設定雙向 TLS
如要設定雙向 TLS,請按照下列步驟操作:
- 在 Edge 上建立 KeyStore,並按照「KeyStore 和 TrustStore」一文所述程序,上傳憑證和私密金鑰。 在本範例中,請建立名為 myTestKeystore 的金鑰儲存區,並為憑證和私密金鑰使用別名 myKey。
-
使用下列 POST API 呼叫,為您在上方建立的 KeyStore 建立名為 myKeyStoreRef 的參照:
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參照類型。使用下列 GET API 呼叫查看參照:
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/myKeyStoreRef / -u email:password - 如要驗證後端憑證,請在 Edge 上建立信任儲存區,然後上傳憑證和 CA 鏈結,如「金鑰儲存區和信任儲存區」一文所述。 以這個範例來說,如果您必須建立信任儲存庫,請將其命名為「myTrustStore」myTrustStore。
-
如果您已建立信任儲存區,請使用下列 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 - 使用 Edge 管理 UI 更新 API Proxy 的 TargetEndpoint 定義 (或編輯 Proxy 的 XML 檔案,前提是您以 XML 定義 API Proxy):
- 前往 https://enterprise.apigee.com 登入 Edge 管理 UI。
- 在 Edge 管理 UI 選單中,選取「API」。
- 選取要更新的 API Proxy 名稱。
- 選取「開發」分頁標籤。
- 在「目標端點」下方,選取「預設」。
- 在程式碼區域中,編輯
<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> - 儲存 API Proxy。如果 API Proxy 已部署,儲存後會以新設定重新部署。
如要進一步瞭解 <TargetEndpoint> 中提供的選項,包括使用變數提供 TargetEndpoint <SSLInfo> 值,請參閱 API Proxy 設定參考資料。
啟用 SNI
Edge 支援從訊息處理器使用伺服器名稱指標 (SNI),以 Apigee Edge for Cloud 和 Private Cloud 部署作業中的端點為目標。
為與現有目標後端向後相容,Edge for the Private Cloud 預設會停用 SNI。如果目標後端已設定為支援 SNI,您就可以啟用這項功能。詳情請參閱「搭配 Edge 使用 SNI」。