Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SSL重新协商不完全成功_Java_Web Services_Ssl_Weblogic - Fatal编程技术网

Java SSL重新协商不完全成功

Java SSL重新协商不完全成功,java,web-services,ssl,weblogic,Java,Web Services,Ssl,Weblogic,我在Weblogigc 12c服务器上有一个web应用程序。它调用外部SOAP ws。我正在使用SSL。我使用apachecxf生成了客户机类 我收到SSLHandshakeException,不允许不安全的重新协商 奇怪的是,即使在堆栈跟踪中,也会给出URL:。。。所以它调用SSL端口 更奇怪的是,为了便于移植,我的WS调用都在一个单独的jar文件中,而在Eclipse中,我运行一个测试类,所有调用都可以工作 经过一些研究,我可以确认以下几点: 我使用的是相同的jdk1.8.031 我正在使用

我在Weblogigc 12c服务器上有一个web应用程序。它调用外部SOAP ws。我正在使用SSL。我使用apachecxf生成了客户机类

我收到SSLHandshakeException,不允许不安全的重新协商

奇怪的是,即使在堆栈跟踪中,也会给出URL:。。。所以它调用SSL端口

更奇怪的是,为了便于移植,我的WS调用都在一个单独的jar文件中,而在Eclipse中,我运行一个测试类,所有调用都可以工作

经过一些研究,我可以确认以下几点:

我使用的是相同的jdk1.8.031

我正在使用相同的密钥库

在Weblogic上,我尝试了-Dsun.security.ssl.allowUnsafeRenegotiation=true,这将错误更改为“无重新协商”

在Weblogic上,我还添加了-Dsun.security.ssl.allowLegacyHelloMessages=true,但这也会抛出“无重新协商”错误

有什么想法吗

更新:我的weblogic版本错了-它是12,反映在原始帖子中。我已将JDK升级到8.31

我没有在SSL高级选项卡中看到使用JSSE SSL

我打开了SSL日志记录,我的客户端代码做了两件事…:建立会话,2:拨打电话。您可以在日志中看到,我第一次接到的电话工作正常,返回了会话ID。但在第二次调用之前,我得到了一个错误:以下是相关位:

%% Cached client session: [Session-5, SSL_RSA_WITH_RC4_128_MD5]
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Application Data, length = 265
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Application Data, length = 1054
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', READ: TLSv1 Application Data, length = 906
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', READ: TLSv1 Application Data, length = 21
Jan 28, 2015 1:38:22 PM com.mycompany.ws getNewWSSessionId
FINE: **** Setting sessionID in Context:b89bed7deed74d4a9283099e3d0518aa
******* Session established. SessionID:b89bed7deed74d4a9283099e3d0518aa
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', setSoTimeout(60000) called
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', handling exception: javax.net.ssl.SSLHandshakeException: Insecure renegotiation is not allowed
%% Invalidated:  [Session-5, SSL_RSA_WITH_RC4_128_MD5]
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', SEND TLSv1 ALERT:  fatal, description = handshake_failure
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', WRITE: TLSv1 Alert, length = 18
[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)', called closeSocket() 
异常是从Apache CXF引发的:

org.apache.cxf.interceptor.Fault: Could not send Message.
at  org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at   org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:570)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:479)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:382)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:335)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:136)
at com.sun.proxy.$Proxy136.loginTool(Unknown Source)

我相信Weblogic版本仍然支持Certicom和JSSE SSL实现。这只是一个猜测,但我会检查weblogic服务器是否启用了“use JSSE”(它位于weblogic管理控制台环境->服务器->您的服务器->SSL选项卡->高级链接->页面底部),然后重新启动/重试。您可以发布您正在使用的客户端代码吗?您连接/使用Socket的方式有问题,我也有同样的问题。有什么帮助吗?