【发布时间】:2014-01-21 04:11:40
【问题描述】:
我收到了以下问题。任何帮助将不胜感激!
我需要做的是配置 SSL 以根据基本可信根(通常由操作系统和/或 Java 提供)验证目标端点的 SSL 证书。没有文档告诉我如何打开 SSL 证书验证,或者如果我添加一个 TrustStore,它是否会保证 SSL 证书已经过验证。我看到的唯一相关教程是关于我们没有使用的 SSL 客户端身份验证。
【问题讨论】:
标签: apigee
我收到了以下问题。任何帮助将不胜感激!
我需要做的是配置 SSL 以根据基本可信根(通常由操作系统和/或 Java 提供)验证目标端点的 SSL 证书。没有文档告诉我如何打开 SSL 证书验证,或者如果我添加一个 TrustStore,它是否会保证 SSL 证书已经过验证。我看到的唯一相关教程是关于我们没有使用的 SSL 客户端身份验证。
【问题讨论】:
标签: apigee
page 解释了后端 SSL 服务器证书的验证。请注意,该页面记录了如何实现相互身份验证,其中网关将验证目标服务器的 SSL 证书(您想要),并将证书发送到目标作为标识(您不想要)。
要验证目标的证书,您需要创建一个信任库并上传目标服务器的信任链中的所有证书。该文档仅提到上传目标服务器的证书(如果您的目标服务器使用自签名证书,则该证书有效),但如果您使用非自签名证书,则需要上传证书的整个信任链。创建并上传到信任库如上页第 6 步所示。
然后,您会希望目标端点配置如下所示:
<TargetEndpoint name="default>
<HTTPTargetConnection>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<TrustStore>myTruststore</TrustStore>
<IgnoreValidationErrors>false</IgnoreValidationErrors>
</SSLInfo>
<URL>https://myservice.com</URL>
</HTTPTargetConnection>
</TargetEndpoint>
ClientAuthEnabled=false 表示网关不会向目标发送证书。
如果目标返回的证书无法使用信任库中的证书进行验证,IgnoreValidationErrors=false 将导致连接中止。 IgnoreValidationErrors=false 是默认设置,因此您可以将其省略,它会按需要工作。但是,如果您在与目标服务器通信时遇到问题,则在测试期间将忽略标志设置为 true 以允许通信可能很有用,即使证书验证失败(只是为了隔离您的问题)。请务必在生产中将其设置为 false。
可以在here 找到 SSLInfo 元素的 xsd 架构。
【讨论】: