我有一个Mule应用程序需要使用双向SSL身份验证通过HTTPS与外部服务器通信。
我的问题是:如何在Mule中启用服务器证书验证?看来,默认情况下,Mule并不验证服务器的证书。我使用的是Mule v 3.3.0。
例如:' -k' curl中的选项会禁用服务器的证书验证。
以类似的方式,是否有任何配置参数可用于启用/禁用服务器的证书验证?
由于 洁
答案 0 :(得分:2)
对于3.6之前的Mule版本,HTTP传输支持配置HTTP出站端点使用的信任存储,以确定HTTPS服务器提供的证书是否应该受信任。
要提供包含您需要信任的服务器证书的密钥存储区,请向<https:tls-server />
提供<https:connector />
,并在<https:outbound-endpoint />
中引用该连接器:
<https:connector name="myHttpsConnector">
<https:tls-server path="truststore.jks" storePassword="supersecure" />
</https:connector>
<flow name="someFlow">
<https:outbound-endpoint host="remote-host" port="443" path="/api" connector-ref="myHttpsConnector" />
</flow>
clare的答案中链接的博客文章从服务器端和客户端都解释了这一点。你也可以参考HTTPS Transport Reference,虽然它没有解释tls-server与tls-client的使用。
答案 1 :(得分:1)
您可以查看此blogpost。它将向您展示如何在Mule中配置相互身份验证。 HTH。
答案 2 :(得分:1)
您可以在Mule&gt; = 3.6.0中配置HTTP请求连接器,以使用您创建的信任存储,其中包含您需要使用TLS Configuration信任的服务器的证书。 / p>
它可能看起来像这样:
<tls:context name="tlsContextForServiceFoo">
<tls:trust-store path="serviceFooServerCertificates.jks" password="supersecure"/>
<tls:key-store path="myClientCertificates.jks" keyPassword="extrasecure" password="ultrasecure"/>
</tls:context>
<http:request-config name="twoWayAuthServiceFooConfig"
protocol="HTTPS"
host="services.pentagon.gov"
port="443"
tlsContext-ref="tlsContextForServiceFoo" />
<flow name="useServiceFoo">
<http:request config-ref="twoWayAuthServiceFooConfig" path="/api/doStuff" method="POST" />
</flow>