-6ren">
gpt4 book ai didi

java - Weblogic 杀死 CXF 的 SSL 配置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:51:47 24 4
gpt4 key购买 nike

好时机!

我创建了一个简单的 CXF 客户端来与受 SSL 保护的远程服务进行通信。如果我运行 JUnit 测试,握手会无误地执行并且通信正常进行。

<http:conduit name="<service_namespace_port>.http-conduit">
<http:client AutoRedirect="true" Connection="Keep-Alive"/>
<http:tlsClientParameters secureSocketProtocol="SSL" disableCNCheck="true">
<sec:keyManagers keyPassword="pass">
<sec:keyStore type="JKS" password="pass" file="keystore"/>
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="pass" file="truststore"/>
</sec:trustManagers>
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_AES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>

如果我在 Weblogic Server (11g) 上部署我的应用程序并执行请求,握手会失败并显示错误“无法找到到请求目标的有效证书路径”。根据“-Djavax.net.debug=all”获得的日志,问题是 Weblogic 获取其 java cacert (/jre/lib/security) 忽略配置的 CXF 客户端的信任库。

我试过写一行 <package-name>javax.jws.*</package-name>在 weblogic-application.xml 中,但这会终止应用程序并显示错误“org.springframework.beans.MethodInvocationException:属性‘serviceClass’抛出异常;嵌套异常是 java.lang.NoClassDefFoundError:javax/jws/WebService”。

有人可以建议,如何告诉 weblogic 不参与客户端-服务器通信?

编辑。这是完整的客户端配置(Spring-CXF):

<http:conduit name="<service_namespace_port>.http-conduit">
<http:client AutoRedirect="true" Connection="Keep-Alive"/>
<http:tlsClientParameters secureSocketProtocol="SSL" disableCNCheck="true">
<sec:keyManagers keyPassword="pass">
<sec:keyStore type="JKS" password="pass" file="keystore"/>
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="pass" file="truststore"/>
</sec:trustManagers>
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_AES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>

<jaxws:client id="service"
serviceClass="foo.bar.ServiceClass"
address="<service_url>" />
<bean id="client" class="foo.bar.ClientClass"/>

编辑。根据this post ,我改变了 <http:conduit name="<service_namespace_port>.http-conduit"><http:conduit name="*.http-conduit">现在我收到错误消息“嵌套异常是 java.lang.RuntimeException:无法创建安全的 XMLInputFactory”。前段时间我遇到了这个错误,我找到的解决方案是 using the system property .但它不再适合...有人知道如何解决这个问题吗?

最佳答案

最后,我找到了解决这两个问题的方法。

首先,我要感谢 Cristian Meneses 提供的真正有用的答案!

接下来请看我在this post中的回答对于“无法创建安全的 XMLInputFactory”问题的解决方案。之后,检查 this post对于 http:conduit name 配置(在我的例子中,我使用了这样的结构:<http:conduit name="*.http-conduit">)。混合这些信息,我已经设法使我的应用程序正常工作。

因此,据我所知,主要思想是当 WLS 与管道名称匹配时,它使用配置的 CXF 客户端 keystore ,但如果不匹配,则使用 cacerts。

奇迹提示:确实没有必要(但强烈建议)像官方文档中所说的那样命名 http:conduit bean(我的目标是使服务端点可配置)。 http:conduit bean 的名称是匹配服务的模板您要连接的名称。请参阅 ticket . Jason Pell 提供了一个很好的解决方法。

关于java - Weblogic 杀死 CXF 的 SSL 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551097/

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