我有一个Mule应用程序,它需要使用双向SSL身份验证通过HTTPS与外部服务器进行通信。
我的问题是:如何在Mule中启用服务器证书验证?默认情况下,Mule似乎不会验证服务器的证书。我使用的是Mule v 3.3.0。
例如:curl中的"-k"选项禁用服务器的证书验证。
同样,是否有任何配置参数可以启用/禁用服务器的证书验证?
谢谢Jai
对于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传输参考,尽管它没有解释tls服务器与tls客户端的使用。
您可以查看这篇博客文章。它将向您展示如何在Mule中配置相互身份验证。HTH。
您可以在Mule>=3.6.0中配置HTTP请求连接器,以使用您创建的信任存储,该存储包含您需要使用TLS配置信任的服务器的证书。
它可能看起来像这样:
<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>