gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:38 25 4
gpt4 key购买 nike

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

<https:connector
name="my.https.connector"
cookieSpec="netscape"
validateConnections="true"
sendBufferSize="0"
receiveBufferSize="0"
receiveBacklog="0"
clientSoTimeout="10000"
serverSoTimeout="10000"
socketSoLinger="0"
doc:name="HTTPS">
<service-overrides sessionHandler="org.mule.session.NullSessionHandler"/>
</https:connector>

开箱即用。

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

    <https:tls-client path="keystore" storePassword="psw" />
<https:tls-key-store path="keystore" storePassword="psw" keyPassword="psw" />

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

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

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

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

但运气不好。运行集成测试时仍然出现以下异常

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 有一个测试环境,您可以从中运行测试用例。

关于java - 信任所有证书的 Mule HTTPS 连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com