設定雲端的虛擬主機

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

付費帳戶的 Cloud 客戶可以在機構中建立虛擬主機。

誰可以在雲端建立及修改虛擬主機

只有 Edge Cloud 的付費帳戶才能建立及修改虛擬主機。 建立虛擬主機的使用者必須是機構管理員,或具備修改虛擬主機權限的自訂角色。其他角色的使用者沒有建立虛擬主機的授權。

舉例來說,付費顧客可以:

  • 啟用單向和雙向 TLS
  • 指定虛擬主機使用的金鑰儲存區/信任儲存區

免費和試用帳戶無法建立或修改虛擬主機,只能使用在 Edge 註冊時為他們建立的虛擬主機。如要進一步瞭解 Edge 定價方案,請參閱 https://apigee.com/api-management/#/pricing

設定雲端虛擬主機的需求

下表彙整建立虛擬主機的相關規定:

類別 規定 說明
帳戶類型 付費 免費和試用帳戶無法建立或修改虛擬主機。
使用者角色 機構管理員 只有機構管理員可以建立虛擬主機,或具有修改虛擬主機權限的自訂角色使用者。
虛擬主機數量 最多 20 個

在 Cloud 中,每個機構/環境最多只能有 20 個虛擬主機。

注意:私有雲的虛擬主機數量沒有限制。

大多數機構/環境會使用兩個虛擬主機:一個用於 HTTP,另一個用於 HTTPS 存取。如果貴機構/環境允許使用不同的網域名稱存取,您可能需要額外的虛擬主機。

基準網址 包括通訊協定 透過 UI 或 API 定義虛擬主機的基本網址時,您必須在網址中指定通訊協定 (即「http://」或「https://」)。
通訊埠 443

您只能在通訊埠 443 上建立虛擬主機。

請注意,只要虛擬主機有不重複的主機別名,且都支援 TLS,您就能在通訊埠 443 上建立多個虛擬主機。

TLS 必填

您只能建立支援透過 HTTPS 使用 TLS 的虛擬主機。您必須已建立包含 TLS 憑證和金鑰的 KeyStore,以及選用的 TrustStore。

您必須擁有由信任實體 (例如 Symantec 或 VeriSign) 簽署的憑證。 您無法使用自行簽署的憑證。

如需 HTTP 存取權,請與 Apigee Edge 支援團隊聯絡。

傳輸層安全標準 (TLS) 通訊協定 TLS 1.2

Edge in the Cloud 僅支援傳輸層安全標準 (TLS) 1.2 版。

主機別名 在機構和環境中具有唯一性 另一個機構/環境組合沒有主機別名。
網域名稱 客戶擁有

您必須擁有虛擬主機中指定的網域名稱。Edge 會檢查主機別名定義的網域名稱是否與 TLS 憑證中的中繼資料相符。

具體來說,Edge 會檢查憑證中的下列資訊:

  • CN - 一般名稱
  • SAN - 主體別名

SAN 或 CN 中可使用萬用字元,例如 *.myco.net

Edge 也會驗證憑證是否過期。

用戶端應用程式 SNI 支援 存取虛擬主機的所有用戶端應用程式都必須支援 SNI。

所有應用程式都必須支援 SNI。

使用瀏覽器建立虛擬主機

本節中的大部分範例都會使用 Edge API 建立或修改虛擬主機,但您可以在 Edge UI 中建立虛擬主機。

如要使用 Edge UI 建立虛擬主機,請按照下列步驟操作:

  1. 登入 apigee.com/edge
  2. 依序選取「管理」>「虛擬主機」
  3. 選取環境,例如 prodtest
  4. 選取「+ 虛擬主機」建立虛擬主機,或選取現有虛擬主機的名稱進行編輯。
  5. 如要詳細瞭解如何填寫虛擬主機欄位,請參閱上表。

定義單向 TLS 的虛擬主機

定義虛擬主機的 XML 物件。舉例來說,下列 XML 物件會定義單向 TLS 的虛擬主機:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>
</VirtualHost>

在這個定義中,您會:

  • name 指定為 myTLSVHost。您可以在 API Proxy 或 API 呼叫中,使用這個名稱參照虛擬主機。
  • 主機別名指定為 api.myCompany.com。這是公開網域,用於存取 DNS 定義和 CNAME 記錄所定義的 API。
  • 通訊埠編號指定為 443。如果省略,通訊埠預設為 443。
  • 視需要啟用 TLS。

    <Enable> 元素設為 true,可啟用單向 TLS,而 <KeyStore> 元素則指定 TLS 連線使用的金鑰儲存區和金鑰別名。

    如要啟用雙向 TLS,請將 <ClientAuthEnabled> 設為 true,並使用 <TrustStore> 元素指定信任儲存區。信任儲存區會保留用戶端憑證核發單位和憑證的 CA 鏈結,這是必要條件。

    注意:由於 Edge 原本支援安全資料傳輸層 (SSL),因此您用來設定傳輸層安全標準 (TLS) 的標記名為 <SSLInfo>

請注意,您可以在虛擬主機中設定其他屬性。如要查看所有屬性的參考資料,請參閱「虛擬主機屬性參考資料」。

決定如何在虛擬主機中指定金鑰儲存區和信任儲存區名稱

設定虛擬主機以支援 TLS 時,請使用參照指定金鑰儲存區。參考是包含金鑰儲存區或信任儲存區名稱的變數,而不是直接指定金鑰儲存區或信任儲存區名稱,如下所示:

    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>false</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
    </SSLInfo>

使用參照的優點是,您可以變更參照的值,藉此變更虛擬主機使用的金鑰儲存區,通常是因為目前金鑰儲存區中的憑證即將到期。變更參照的值不需要重新啟動 Edge 路由器。如要進一步瞭解如何建立及修改參照,請參閱「使用參照」。

您只能參照金鑰儲存區和信任儲存區,不能參照別名。變更 Keystore 的參照時,請確保憑證的別名與舊 Keystore 中的別名相同。

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

使用金鑰儲存區和信任儲存區的參照時,請務必考量下列限制:

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

定義雙向 TLS 的虛擬主機

如要啟用雙向 TLS,請將 <ClientAuthEnabled> 元素設為 true,並使用 <TrustStore> 元素搭配參照指定信任儲存區。信任存放區會保留用戶端憑證核發單位和憑證的 CA 鏈結,這是必要條件。用戶端也必須正確設定雙向 TLS。

如要為雙向 TLS 建立虛擬主機,請建立定義虛擬主機的 XML 物件:

<VirtualHost name="myTLSVHost">
    <HostAliases>
        <HostAlias>api.myCompany.com</HostAlias>
    </HostAliases>
    <Port>443</Port>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://myTestKeystoreRef</KeyStore>
        <KeyAlias>myKeyAlias</KeyAlias>
        <TrustStore>ref://myTestTruststoreRef</TrustStore>
    </SSLInfo>
</VirtualHost>

在這個定義中,您會:

  • <ClientAuthEnabled> 設為 true,即可啟用雙向 TLS。
  • 使用 <TrustStore> 元素指定信任儲存區的參照。信任儲存區會保留用戶端憑證核發單位和憑證的 CA 鏈結,這是必要條件。

定義使用 Apigee 免費試用憑證和金鑰的虛擬主機

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

Apigee 免費試用憑證是為 *.apigee.net 網域定義,因此,虛擬主機的 <HostAlias> 也必須採用 *.apigee.net 格式。

如果您要執行雙向 TLS,仍須將 <ClientAuthEnabled> 元素設為 true,並使用 <TrustStore> 元素搭配參照指定信任儲存區,如上文「定義雙向 TLS 的虛擬主機」所述。

使用 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>

<UseBuiltInFreeTrialCert> 元素的預設值為 false。

如果是雙向 TLS,請將虛擬主機定義為:

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

在 Edge UI 中建立虛擬主機時,選取「Use built-in free trial certificate」(使用內建的免費試用憑證) 選項,即可使用免費的 Apigee 憑證和金鑰:

選取「使用內建免費試用憑證」

建立虛擬主機

請按照下列程序建立虛擬主機:

  1. 為面向公眾的網域 (本例為 api.myCompany.com) 建立 DNS 項目和 CNAME 記錄,並指向 [org]-[environment].apigee.net
  2. 按照「 使用 Edge UI 建立 KeyStore 和 TrustStore」一文所述的程序,建立並設定 KeyStore (本例中名為 myTestKeystore)。在這個範例中,請務必確認金鑰儲存區使用別名 myKeyAlias 做為憑證和私密金鑰。
  3. 將憑證和金鑰上傳至 KeyStore。確認憑證指定的網域名稱與虛擬主機要用的主機別名相符。
  4. 使用 Edge UI 或 API 建立金鑰儲存區的參照。參照會指定金鑰儲存區的名稱,以及 KeyStore 參照類型。如要進一步瞭解如何建立及修改參照,請參閱「使用參照」。

  5. 使用「建立虛擬主機」API 建立虛擬主機。請務必指定正確的 KeyStore 參照和金鑰別名。 如要使用 API,請使用下列 POST API 呼叫建立名為 myTLSVHost 的金鑰儲存區:
    curl -X POST -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
      </VirtualHost>' \
      -u orgAdminEmail:password

    如果您要與用戶端執行雙向 TLS,請將 <ClientAuthEnabled> 設為 true,並使用 <TrustStore> 元素指定信任儲存區。用戶端必須正確設定雙向 TLS,也就是說,Edge 必須有包含用戶端憑證發行者和憑證鏈結的信任儲存區。按照「 使用 Edge UI 建立 KeyStore 和 TrustStore」一文所述的程序建立 TrustStore。

  6. 如果您有任何現有的 API Proxy,請將虛擬主機新增至 ProxyEndpoint 中的 <HTTPConnection> 元素。系統會自動將虛擬主機新增至所有新的 API Proxy。 請參閱 設定 API Proxy 以使用虛擬主機

將 API Proxy 更新為使用虛擬主機,並為主機別名建立 DNS 項目和 CNAME 記錄後,即可存取 API Proxy,如下所示:

https://api.myCompany.com/v1/{project-base-path}/{resource-path}

例如:

https://api.myCompany.com/v1/weather/forecastrss?w=12797282

修改虛擬主機

付費 Cloud 客戶修改現有虛擬主機時,主要會執行兩項工作:

  1. 修改對金鑰儲存區或信任儲存區的參照值。

    注意:設定 <KeyStore><TrustStore> 使用參照後,您隨時可以變更參照的值。不過,如要變更 <KeyStore><TrustStore> 以使用其他參照,或變更 <KeyAlias> 以使用其他別名,請與 Apigee Edge 支援團隊聯絡。
  2. 修改虛擬主機的 TLS 屬性。

修改參照的值

您可以修改參照的值,變更虛擬主機使用的金鑰儲存區或信任儲存區。

修改參照值前須知:

  1. 按照「 使用 Edge UI 建立 KeyStore 和 TrustStore」一文的說明,建立新的 KeyStore,並上傳憑證和金鑰。在新金鑰儲存區中,請務必使用與現有金鑰儲存區相同的金鑰別名
  2. 如有需要,請按照「 使用 Edge UI 建立 KeyStore 和 TrustStore」一文所述,建立新的 TrustStore 並上傳憑證。
  3. 如要修改參照,請參閱「使用參照」一文。

修改虛擬主機的 TLS 屬性

付費客戶可以使用「 更新虛擬主機」API 更新虛擬主機。您可以使用這個 API,設定虛擬主機屬性參考資料中說明的虛擬主機所有屬性。

修改虛擬主機時,Edge 會執行類似於建立虛擬主機時的驗證。也就是說,在修改時,Edge 會驗證:

  • 主機別名指定的網域未用於其他機構和環境。
  • 您擁有網域名稱。具體來說,Edge 會檢查憑證中的下列資訊是否與主機別名相符:
    • CN - 一般名稱
    • SAN - 主體別名
    • Edge 會驗證憑證是否過期。

如要使用 Edge API 修改虛擬主機,請執行下列操作:

  1. 使用「Update a Virtual Host」(更新虛擬主機) API 更新虛擬主機。使用 API 時,您必須在要求主體中指定虛擬主機的完整定義,而不只是要變更的元素。在本範例中,您會設定 proxy_read_timeout 屬性的值:

    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost name="myTLSVHost">
        <HostAliases>
          <HostAlias>api.myCompany.com</HostAlias>
        </HostAliases>
        <Port>443</Port>
        <SSLInfo>
          <Enabled>true</Enabled>
          <ClientAuthEnabled>false</ClientAuthEnabled>
          <KeyStore>ref://myTestKeystoreRef</KeyStore>
          <KeyAlias>myKeyAlias</KeyAlias>
        </SSLInfo>
        <Properties>
           <Property name="proxy_read_timeout">50</Property>
             </Properties>
      </VirtualHost>' \
      -u orgAdminEmail:password

修改虛擬主機,以參照金鑰庫和信任儲存區

Cloud 中 Edge 的所有新虛擬主機都會參照金鑰儲存區和信任儲存區。 您可以使用參照變更金鑰儲存區和信任儲存區,不必聯絡 Apigee Edge 支援團隊

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

更新虛擬主機以使用參照

請按照下列程序更新虛擬主機:

  1. 如有需要,請按照「 使用 Edge UI 建立 KeyStore 和 TrustStore」一文的說明,建立新的 KeyStore 並上傳憑證。如果您已有金鑰儲存區,可以設定參照來指向該儲存區。
  2. 建立 KeyStore 的新參照。
  3. 視需要建立新的信任儲存區並上傳憑證。如果您已有信任儲存區,可以設定參照來指向該儲存區。
  4. 建立信任儲存區的新參照。
  5. 更新虛擬主機,設定金鑰儲存區、別名、信任儲存區和任何其他 TLS 屬性。呼叫的酬載如下:
    curl -X PUT -H "Content-Type:application/xml" \
      https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/virtualhosts/{vhost_name} \
      -d '<VirtualHost  name="myTLSVHost">
            <HostAliases>
              <HostAlias>api.myCompany.com</HostAlias>
            </HostAliases>
            <Port>443</Port>
            <OCSPStapling>off</OCSPStapling>
            <SSLInfo>
              <Enabled>true</Enabled>
              <ClientAuthEnabled>true</ClientAuthEnabled>
              <KeyStore>ref://myKeyStore2Way</KeyStore>
              <KeyAlias>keyAlias</KeyAlias>
              <TrustStore>ref://myTrustStore2Way</TrustStore>
              <IgnoreValidationErrors>false</IgnoreValidationErrors>
            </SSLInfo>
          </VirtualHost>' \
        -u orgAdminEmail:pWord
  6. 請與 Apigee 支援團隊聯絡,重新啟動 Edge 路由器,完成程序。