<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 会检查证书中的以下信息:
SAN 或 CN 允许使用通配符,例如 Edge 还会验证证书是否未过期。 |
客户端应用 SNI 支持 | 访问虚拟主机的所有客户端应用都必须支持 SNI。 |
所有应用都需要 SNI 支持。 |
使用浏览器创建虚拟主机
本部分中的大多数示例都使用 Edge API 创建或修改虚拟主机,但 则可以在 Edge 界面中创建虚拟主机。
如需使用 Edge 界面创建虚拟主机,请执行以下操作:
- 登录 apigee.com/edge。
- 选择管理 >虚拟主机中所述。
- 选择环境,例如 prod 或 test。
- 选择 + 虚拟主机以创建虚拟主机,或者选择一个 对其进行修改
- 如需详细了解如何填充虚拟主机字段,请参阅上表。
为单向 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 证书和密钥时:
创建虚拟主机
请按照以下步骤创建虚拟主机:
- 为您的公开网域
api.myCompany.com
创建 DNS 条目和 CNAME 记录,在此示例中, 指向[org]-[environment].apigee.net
。 - 使用以下命令创建并配置一个名为 myTestKeystore 的密钥库 操作步骤如下: 使用 Edge 界面创建密钥库和信任库。在本示例中 确保密钥库使用证书的别名 myKeyAlias 私钥。
- 将您的证书和密钥上传到密钥库。确保您的 cert 与您要用于虚拟主机的主机别名匹配。
-
使用 Edge 界面或 API 创建对密钥库的引用。参考 将密钥库的名称和引用类型指定为
KeyStore
。 如需了解更多详情,请参阅使用引用 详细了解如何创建和修改参考文件。 - 使用 创建
虚拟主机 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 界面创建密钥库和信任库。 如果您有任何现有的 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 客户需要执行两项主要任务:
- 修改对密钥库或信任库的引用的值。
注意:设置<KeyStore>
或<TrustStore>
以使用引用,您可以更改引用的值 。不过,如果您想更改<KeyStore>
或<TrustStore>
以使用其他引用,或更改<KeyAlias>
如要使用其他别名,您必须与 Apigee Edge 支持团队联系。 - 修改虚拟主机的 TLS 属性。
修改 参考信息
您可以修改引用的值,以更改虚拟 主机。
在修改引用的值之前,请执行以下操作:
- 创建新的密钥库,并上传证书和密钥(如中所述) 使用 Edge 界面创建密钥库和信任库。在新的密钥库中 确保为密钥别名使用与现有密钥中相同的名称 商店。
- 如有必要,请按照中的说明创建新的信任库并上传证书。 使用 Edge 界面创建密钥库和信任库。
- 按照使用参考文件中的说明修改参考文件。
修改 TLS 属性 虚拟主机
付费客户可以使用 更新 Virtual Host API 以更新虚拟主机。利用此 API,您可以设置 描述虚拟主机的属性,如 虚拟主机属性参考。
在您修改虚拟主机时,Edge 会执行验证,类似于您在创建 虚拟主机。也就是说,在修改时,Edge 会验证:
- 主机别名指定的网域未用于其他组织,并且 环境
- 您的域名归您所有。具体而言,Edge 会检查
cert 与主机别名匹配:
<ph type="x-smartling-placeholder">
- </ph>
- CN - 通用名称
- SAN - 正文备用名称
- Edge 会验证证书是否未过期。
如需使用 Edge API 修改虚拟主机,请执行以下操作:
使用 更新 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 上较旧的虚拟主机可能未配置为使用密钥库的引用, 信任库。在这种情况下,您可以更新虚拟主机以使用引用。
更新虚拟主机以使用 参考信息
请按照以下步骤更新虚拟主机:
- 如果需要,请按照中的说明创建新的密钥库并上传证书。 使用 Edge 界面创建密钥库和信任库。如果您已有 密钥库,那么您可以配置一个指向它的引用。
- 创建对密钥库的新引用。
- 如果需要,请创建新的信任库并上传证书。如果您已有信任库 那么您可以配置一个指向它的引用。
- 创建对信任库的新引用。
- 更新虚拟主机以设置密钥库、别名、信任库和任何其他 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
- 联系 Apigee 支持重启边缘路由器以完成此流程。