我收到了以下问题。任何帮助将不胜感激!
我需要做的是配置 SSL 以根据基本可信根(通常由操作系统和/或 Java 提供)验证目标端点的 SSL 证书。没有文档告诉我如何打开 SSL 证书验证,或者如果我添加一个 TrustStore,它是否会保证 SSL 证书已经过验证。我看到的唯一相关教程是关于我们没有使用的 SSL Client Auth。
我收到了以下问题。任何帮助将不胜感激!
我需要做的是配置 SSL 以根据基本可信根(通常由操作系统和/或 Java 提供)验证目标端点的 SSL 证书。没有文档告诉我如何打开 SSL 证书验证,或者如果我添加一个 TrustStore,它是否会保证 SSL 证书已经过验证。我看到的唯一相关教程是关于我们没有使用的 SSL Client Auth。
本页说明了后端 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 。
SSLInfo 元素的 xsd 架构可在此处找到。