我收到了以下问题。任何帮助将不胜感激!
我需要做的是配置SSL以针对基本可信根(通常由OS和/或Java提供)验证目标端点的SSL证书。没有文档告诉我如何启用SSL证书验证,或者我是否添加了TrustStore,如果它将保证SSL证书的验证。我看到的唯一相关的教程是SSL Client Auth,我们没有使用它。
答案 0 :(得分:1)
此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是默认值,因此您可以将其保留,并且可以根据需要运行。但是,如果您在与目标服务器通信时遇到问题,则在测试期间将ignore标志设置为true可能很有用,即使证书验证失败(仅仅是为了隔离您的问题)也允许通信。请确保在生产中将其设置为false。
可以找到SSLInfo元素的xsd架构here。