信任所有证书的Mule HTTPS连接器

我正在为Mule ESB应用程序编写集成测试。 Mule应用程序通过HTTPS连接到第三方API。 当我尝试针对第三方测试API端点运行我的应用程序时,一切正常,我不必将任何客户端特定的SSL配置添加到HTTPS连接器。 我相信这是因为他们的服务器具有CA签名证书,因此他们可以立即受到信任,例如像这样的HTTP连接器

   

将开箱即用。

在编写集成测试时,我会存根(或者如果您愿意,可以模拟)第三方API。 但是,为了使SSL工作,我必须为嵌入式HTTPS服务器生成密钥库,并通过添加来修改客户端HTTPS连接器

    

正如互联网上所提到的那样。

我可以在一个单独的XML文件中定义测试HTTPS连接器,并将其加载到FunctionalTestCase.getConfigResources()方法中。 然而,这并不理想:我真正想要的是使HTTPS连接器(客户端)信任所有内容的方法 – 但仅在运行集成测试时 – 即在执行Maven构建时。 这必须以编程方式发生,以便保持Mule应用程序代码不变。

我试图将以下代码添加到@BeforeClass注释方法中

http://www.rgagnon.com/javadetails/java-fix-certificate-problem-in-HTTPS.html

但没有运气。 运行集成测试时,我仍然遇到以下exception

 Exception stack is: 1. unable to find valid certification path to requested target (sun.security.provider.certpath.SunCertPathBuilderException) sun.security.provider.certpath.SunCertPathBuilder:196 (null) 2. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (sun.security.validator.ValidatorException) sun.security.validator.PKIXValidator:385 (null) 3. sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (javax.net.ssl.SSLHandshakeException) sun.security.ssl.Alerts:192 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/net/ssl/SSLHandshakeException.html) 

有工作解决方案的人吗? 🙂

是否有一个特殊原因导致您无法创建测试jks文件以导入ESB生态系统进行测试? 我假设ESB有一个测试环境,您可以从中运行测试用例。

在运行时管理器的属性中设置它:com.ning.http.client.AsyncHttpClientConfig.acceptAnyCertificate = true

根据需要配置pom.xml文件,以便它在部署之间保持不变。