我们一直在寻找一个解决我们的问题一个星期后,在寻找了很多类似的职位和阅读了所有可用的文档,我们还没有得到一个解决方案。
我将解释我目前的情况,我希望有人能帮助我们解决这个问题。
我们在JAX-WS中开发了一个Web服务客户端,它与另一个平台上的服务器端Web服务进行双向SSL通信,我们有服务器端的CA来信任他,我们的私有证书在服务器端进行身份验证。
我们的Web服务客户端部署在Weblogic 10.3中,当它要调用服务器端Web服务时,我们动态加载信任库和密钥库,密钥库只加载了一个证书,因为每次我们要使用不同的证书,所以我们不能只使用静态密钥库。
问题在于,当我们建立连接、协商握手时,因为Weblogic忽略了我们在调用之前加载的信任库和密钥库,而只在Weblogic的密钥库中查找受信任证书和私钥...
如果我们将可信证书放入Weblogic的信任库中,并再次开始通信。我们开始握手,我们信任服务器端(因为现在Weblogic在其密钥库中找到CA),但当我们的Web服务客户端必须发送服务器端信任的证书时,“证书链”为空,我们得到“BAD_CERTIFICATE”。
我们已经尝试使用Apache CXF和JAX-WS,问题是相同的,使用系统属性和库设置密钥库......因此,我们不知道为什么我们的Web服务客户端不能发送证书。似乎Weblogic不为它们提供服务是因为某些原因,可能是Weblogic配置,但我们不知道。
如果有人知道我们能做什么,请告诉我们。
先谢谢你。
3条答案
按热度按时间uemypmqf1#
您的问题是客户端和服务器端的SSL配置。SSL握手问题与您的Web服务配置无关:Web服务通过HTTP,是java
HttpsURLConnection
来处理这个问题。双向SSL握手要求:
客户端
编码:
checkURLSpoofing
)的URL匹配,或者在使用服务客户端之前关闭此验证设置编码:
编码:
服务器端
这应该能起作用,如果一直有问题,请添加stacktrace(客户机和服务器)以查看发生了什么。
3hvapo4f2#
逐步说明。
请参阅SSL configuration for WebLogic Server,为客户端应用程序配置双向SSL和配置双向SSL。
1)服务信头。
2)客户端处理程序解析器。
gab6jxml3#
在更改Weblogic中的一个设置之前,我遇到了很多SSL和JAX-WS问题:我使用JSSE。这取决于weblogic的版本(10.3.x,x改变了一切),这可能是可能的,也可能是不可能的。它对我在10.3.3和10.3.5上工作,它们都是Weblogic 11 g。这个改变可以使用控制台(在安全性中,高级)或命令行-Dweblogic.security.SSL.enableJSSE=true来完成
原因是在以前的Oracle SSL实现中(如果不使用JSSE),根据算法和密钥大小,某些证书不被接受。此外,此实现使用不同的设置,并且不会将JSSE设置用于javax.net.ssl.keyStore...
我现在使用这个JSSE + -Djavax .NET.debug=ssl:verbose,一切都很清楚。