为 Cloud 配置虚拟主机

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

拥有付费账号的 Cloud 客户可以在组织中创建虚拟主机。

了解详情

谁可以创建和修改 云主机

只有 Edge Cloud 中的付费账号才能创建和修改虚拟主机。 创建虚拟主机的用户必须是组织管理员角色,或 拥有修改虚拟主机权限的自定义角色。其他角色的用户没有 授权创建虚拟主机。

例如,付费客户可以:

  • 启用单向 TLS 和双向 TLS
  • 指定虚拟主机使用的密钥库/信任存储区

免费试用账号和试用账号无法创建或修改虚拟主机,仅限于虚拟主机 。如需详细了解 Edge 定价方案,请参阅 https://apigee.com/api-management/#/pricing.

为 Cloud 配置虚拟主机的要求

下表总结了创建虚拟主机的要求:

类别 要求 说明
账号类型 付费 免费试用账号和试用账号无法创建或修改虚拟主机。
用户角色 组织管理员 只有组织管理员才能创建虚拟主机,或者创建具有以下特征的自定义角色用户: 拥有修改虚拟主机的权限。
虚拟主机数量 最多 20 个

每个虚拟机最多只能有 20 个虚拟主机 组织/环境。

注意:专用服务中的虚拟主机数量没有限制 Cloud 的最新动态和提示。

大多数组织/环境使用两个虚拟主机:一个用于 HTTP,另一个用于 HTTPS 访问权限。如果您的组织/环境允许,您可能需要额外的虚拟主机 使用不同的域名进行访问。

基准网址 包含协议 在界面中或通过 API 为虚拟主机定义基准网址时,您需要 必须将协议(即“http://”或“https://”)指定为网址的一部分。
端口 443

您只能在端口 443 上创建虚拟主机。

请注意,您可以在端口 443 上创建多个虚拟主机,只要这些主机具有 唯一主机别名,并且都支持 TLS。

TLS 必填

您只能创建支持基于 HTTPS 的 TLS 的虚拟主机。您必须 创建一个密钥库和可选的信任库,其中包含您的 TLS 证书和密钥。

您必须拥有由可信实体(例如 Symantec 或 VeriSign)签署的证书。 您无法使用自签名证书。

如果您需要 HTTP 访问权限,请与 Apigee Edge 支持联系。

TLS 协议 TLS 1.2

Edge in the Cloud 仅支持 TLS 1.2 版。

主机别名 在组织和环境中是唯一的 其他组织/环境组合没有该主机别名。
域名 归客户所有

您必须拥有该虚拟主机中指定的域名。边缘检查 域名(由主机别名定义)与 TLS 中的元数据匹配 证书。

具体而言,Edge 会检查证书中的以下信息:

  • CN - 通用名称
  • SAN - 正文备用名称

SAN 或 CN 允许使用通配符,例如 *.myco.net

Edge 还会验证证书是否未过期。

客户端应用 SNI 支持 访问虚拟主机的所有客户端应用都必须支持 SNI。

所有应用都需要 SNI 支持。

使用浏览器创建虚拟主机

本部分中的大多数示例都使用 Edge API 创建或修改虚拟主机,但 则可以在 Edge 界面中创建虚拟主机。

如需使用 Edge 界面创建虚拟主机,请执行以下操作:

  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>

在此定义中,您可以:

  • 名称指定为 myTLSVHost。使用名称引用 API 代理或 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 时,您可以使用 reference。引用是包含密钥库名称或 而不是直接指定密钥库或信任库名称,如下所示:

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

使用引用的优势在于 虚拟主机使用的密钥库,通常是因为当前密钥库中的证书是 即将过期。更改引用的值不需要重启 边缘路由器如需了解更多详情,请参阅使用引用 详细了解如何创建和修改参考文件。

您只能使用密钥库和信任库的引用;而不能使用别名的引用。更改密钥库的引用时,确保证书的别名与旧密钥库中的别名相同。

使用对密钥库和信任库的引用的限制

在使用对密钥库和 信任库:

  • 如果您支持 SNI 和 在 Apigee 路由器上终止 SSL
  • 如果您在 Apigee 路由器前面有一个负载平衡器,并且终止了 则您无法在虚拟主机中使用密钥库和信任库引用。

为双向 TLS 定义虚拟主机

如需启用双向 TLS,请将 <ClientAuthEnabled> 元素设为 true,并指定受信任证书存储区 结合使用 reference<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 免费试用证书和密钥的虚拟主机

如果您有付费的 Cloud Edge 账号,但尚未拥有 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 界面中,选择使用内置免费试用证书选项 创建虚拟主机以使用免费的 Apigee 证书和密钥时:

选择“使用内置免费试用证书”

创建虚拟主机

请按照以下步骤创建虚拟主机:

  1. 为您的公开网域 api.myCompany.com 创建 DNS 条目和 CNAME 记录,在此示例中, 指向 [org]-[environment].apigee.net
  2. 使用以下命令创建并配置一个名为 myTestKeystore 的密钥库 操作步骤如下: 使用 Edge 界面创建密钥库和信任库。在本示例中 确保密钥库使用证书的别名 myKeyAlias 私钥。
  3. 将您的证书和密钥上传到密钥库。确保您的 cert 与您要用于虚拟主机的主机别名匹配。
  4. 使用 Edge 界面或 API 创建对密钥库的引用。参考 将密钥库的名称和引用类型指定为 KeyStore。 如需了解更多详情,请参阅使用引用 详细了解如何创建和修改参考文件。

  5. 使用 创建 虚拟主机 API。请务必指定正确的密钥库引用和密钥别名。 要使用该 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 界面创建密钥库和信任库

  6. 如果您有任何现有的 API 代理,请将虚拟主机添加到<HTTPConnection> ProxyEndpoint。虚拟主机会自动添加到所有新的 API 代理中。 请参阅 配置 API 代理以使用虚拟主机

更新 API 代理以使用虚拟主机并创建 DNS 条目和 CNAME 后 记录,您就可以按如下所示访问 API 代理:

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 界面创建密钥库和信任库。在新的密钥库中 确保为密钥别名使用与现有密钥中相同的名称 商店
  2. 如有必要,请按照中的说明创建新的信任库并上传证书。 使用 Edge 界面创建密钥库和信任库
  3. 按照使用参考文件中的说明修改参考文件。

修改 TLS 属性 虚拟主机

付费客户可以使用 更新 Virtual Host API 以更新虚拟主机。利用此 API,您可以设置 描述虚拟主机的属性,如 虚拟主机属性参考

在您修改虚拟主机时,Edge 会执行验证,类似于您在创建 虚拟主机。也就是说,在修改时,Edge 会验证:

  • 主机别名指定的网域未用于其他组织,并且 环境
  • 您的域名归您所有。具体而言,Edge 会检查 cert 与主机别名匹配: <ph type="x-smartling-placeholder">
      </ph>
    • CN - 通用名称
    • SAN - 正文备用名称
    • Edge 会验证证书是否未过期。

如需使用 Edge API 修改虚拟主机,请执行以下操作:

  1. 使用 更新 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

修改 虚拟主机使用对密钥库和信任库的引用

“云端 Edge”的所有新虚拟主机都使用对密钥库和信任库的引用。 借助引用,您无需与 Apigee Edge 支持团队联系即可更改密钥库和信任库。

Apigee Edge 上较旧的虚拟主机可能未配置为使用密钥库的引用, 信任库。在这种情况下,您可以更新虚拟主机以使用引用。

更新虚拟主机以使用 参考信息

请按照以下步骤更新虚拟主机:

  1. 如果需要,请按照中的说明创建新的密钥库并上传证书。 使用 Edge 界面创建密钥库和信任库。如果您已有 密钥库,那么您可以配置一个指向它的引用。
  2. 创建对密钥库的新引用。
  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 支持重启边缘路由器以完成此流程。