<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
API 代理的作用是将公开可用的端点映射到您的后端服务。 虚拟主机定义了面向公众的 API 代理向应用公开的方式。对于 例如,虚拟主机会确定是否可以使用 TLS 访问 API 代理。当您 配置 API 代理,修改其 ProxyEndpoint 定义,以配置其 用途。
TargetEndpoint 是 ProxyEndpoint 的出站等效项。TargetEndpoint 函数 作为 HTTP 客户端从 Edge 传递到后端服务。创建 API 代理时,您可以 可以使用零个或多个 Target 端点
了解详情:
配置 TargetEndpoint 或 TargetServer
要配置 TargetEndpoint,请修改用于定义 TargetEndpoint 的 XML 对象。您可以 通过在 API 代理,或在 Edge 管理界面中对其进行修改。
如需使用 Edge 管理界面修改 TargetEndpoint,请执行以下操作:
- 访问 https://enterprise.apigee.com,登录 Edge 管理界面。
- 选择要更新的 API 代理的名称。
- 选择开发标签页。
- 在目标端点下,选择默认。
- 在代码区域中,系统会显示 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 配置。
- 做出更改并保存代理。如果 API 代理已部署,请保存 并使用新设置重新部署
请注意,TargetEndpoint 定义包含 name
属性。您可以使用
name
属性
来配置 API 代理的 ProxyEndpoint 定义,
TargetEndpoint。
如需了解详情,请参阅 API 代理配置参考文档。
TargetEndpoint 可以配置为引用 TargetServer,而不是显式 目标网址。TargetServer 配置将具体的端点网址与 TargetEndpoint 配置执行操作。TargetServer 用于支持负载均衡和故障切换 跨多个后端服务器实例。
下面显示了一个 TargetServer 定义示例:
<TargetServer name="target1"> <Host>mocktarget.apigee.net</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
在 <HTTPTargetConnection>
中通过名称引用 TargetServer
元素。
您可以配置一个或多个已命名的 TargetServer,如下所示。
<TargetEndpoint name="default"> ... <HTTPTargetConnection> <LoadBalancer> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> ... </TargetEndpoint>
请参阅负载均衡 后端服务器了解详情。
关于后端的 TLS 配置
在配置对后端的 TLS 访问之前,您应该了解两个重要事项 分:
- 默认情况下,Edge 不会验证后端证书。您必须创建信任库才能进行配置 用于验证证书的 Edge。
- 使用引用来指定 Edge 使用的密钥库或信任库。
下文介绍了这两种注意事项。
定义信任库以启用证书验证
通过 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 强烈建议您使用指向密钥库的引用,并且 信任库。使用引用的优势 你只需更新引用,使其指向一个不同的密钥库或信任库 更新 TLS 证书。
对以下位置中的密钥库和信任存储区的引用 Target Endpoints 或 TargetServer 定义的工作方式与 (对于虚拟主机)。
转换 TargetEndpoint 或 TargetServer 以使用引用
您可能已有 TargetEndpoint 或 TargetServer 定义 使用密钥库和信任库的文字名称。要转换 TargetEndpoint 或 TargetServer 定义使用引用:
- 更新 TargetEndpoint 或 TargetServer 定义以使用引用。
- 重启边缘消息处理器:
<ph type="x-smartling-placeholder">
- </ph>
- 对于公有云客户,请联系 Apigee Edge 支持团队,以重启消息处理器。
- 对于 Private Cloud 客户,请重启 Edge Message Processors One 。
- 确认您的 TargetEndpoint 或 TargetServer 工作正常。
配置到后端的单向 TLS 服务器
使用 TargetEndpoint 定义时,配置从边缘 (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 验证后端证书,则必须创建信任库 包含后端证书或证书链然后,在 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 进行身份验证。
-
如果您已创建信任库,请使用以下 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 管理界面更新 API 代理的 TargetEndpoint 定义(或者,
如果您在 XML 中定义 API 代理,请修改代理的 XML 文件):
<ph type="x-smartling-placeholder">
- </ph>
- 访问 https://enterprise.apigee.com,登录 Edge 管理界面。
- 在 Edge 管理界面菜单中,选择 API。
- 选择要更新的 API 代理的名称。
- 选择开发标签页。
- 在目标端点下,选择默认。
- 在代码区域中,将
<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 代理。如果 API 代理已部署,则保存此代理后,系统会使用 新设置。
配置到后端的双向 TLS 服务器
如果您想支持边缘(TLS 客户端)和后端服务器(TLS)之间的双向 TLS 服务器):
- 在 Edge 上创建一个密钥库,并上传 Edge 证书和私钥。
- 如果要验证后端证书,请在 Edge 上创建一个信任库,其中包含 证书和 CA 链。
- 更新引用后端服务器的任何 API 代理的 TargetEndpoint 以进行配置 TLS 访问。
使用密钥别名指定密钥库证书
您可以在同一个密钥库中定义多个证书,每个证书都有自己的别名。 默认情况下,Edge 使用密钥库中定义的第一个证书。
(可选)您可以将 Edge 配置为使用 <KeyAlias>
属性指定的证书。
这样,您就可以为多个证书定义一个密钥库,然后
请在 TargetServer 定义中选择所需的服务器。如果 Edge 找不到具有别名的证书
与 <KeyAlias>
匹配,则默认操作是选择
密钥库中的第一个证书
面向公有云的 Edge 用户必须与 Apigee Edge 支持联系才能启用此功能。
配置双向 TLS
如需配置双向 TLS,请执行以下操作:
- 在 Edge 上创建密钥库,并按照以下程序上传证书和私钥 密钥库和信任库中所述。 在本例中,我们创建一个名为 myTestKeystore 的密钥库,该密钥库使用 证书和私钥的 myKey 的别名。
-
使用以下 POST API 调用创建参考 名为 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 的信任库。
-
如果您已创建信任库,请使用以下 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 管理界面更新 API 代理的 TargetEndpoint 定义(或者,
如果您在 XML 中定义 API 代理,请修改代理的 XML 文件):
<ph type="x-smartling-placeholder">
- </ph>
- 访问 https://enterprise.apigee.com,登录 Edge 管理界面。
- 在 Edge 管理界面菜单中,选择 API。
- 选择要更新的 API 代理的名称。
- 选择开发标签页。
- 在目标端点下,选择默认。
- 在代码区域中,将
<HTTPTargetConnection>
元素修改为 添加<SSLInfo>
元素。请务必指定正确的密钥库和密钥别名,并同时设置<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 代理。如果 API 代理已部署,则保存此代理后,系统会使用 新设置。
如需详细了解 <TargetEndpoint>
中提供的选项,包括如何使用变量
提供 TargetEndpoint <SSLInfo>
值,请参阅 API 代理配置参考文档。
启用 SNI
Edge 支持使用消息处理器中的服务器名称指示 (SNI) 来发送 Apigee Edge 中用于云端部署和私有云部署的端点。
为了让私有云的 Edge 向后兼容您现有的目标后端, Apigee 默认停用 SNI。如果您的目标后端配置为支持 SNI, 就可以启用此功能如需了解详情,请参阅将 SNI 与 Edge 搭配使用。