java证书不通过,java-证书不会偶尔发送

在我的应用程序中,我有2个组件与REST(基于客户端服务器)相互通信.

可以将应用程序配置为使用HTTP或HTTPS(自签名证书).

当我不时以HTTPS模式启动应用程序时,客户端无法与服务器通信.我收到以下异常:

09-16-2013 12:28:52 [dispatcher] [http-nio-8143-exec-8] [INFO] - Exception while dispatching request

java.util.concurrent.ExecutionException: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

...

Caused by: com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

...

Caused by: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

...

Caused by: java.io.EOFException: SSL peer shut down incorrectly

...

当我停止并启动该应用程序时,一切正常.

我尝试搜索解决方案,但由于时不时发生并通过重新启动解决了问题,因此找不到与我的问题类似的东西,所有问题都是一致的.

Java版本:Oracle Corporation,“ Java HotSpot(TM)64位服务器VM”,1.7.0_17-b02

操作系统:Red Hat

任何想法?

更新

事实证明,在应用程序运行一段时间后,这也可能发生.意思是,一切正常,SSL通信正常,突然出现此错误,直到我重新启动客户端后,该错误才能解决.

我能够使用-Djavax.net.debug = all重现该问题,显然不是从客户端发送证书,问题是为什么.由于有时一切工作都会顺利进行,是什么导致时常出错?

客户端:

pool-4-thread-2, WRITE: TLSv1 Handshake, length = 48

pool-4-thread-2, waiting for close_notify or alert: state 1

pool-4-thread-2, received EOFException: error

pool-4-thread-2, Exception while waiting for close javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

pool-4-thread-2, handling exception: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

%% Invalidated: [Session-7, TLS_RSA_WITH_AES_128_CBC_SHA]

pool-4-thread-2, SEND TLSv1 ALERT: fatal, description = handshake_failure

Padded plaintext before ENCRYPTION: len = 32

0000: 02 28 7A 8E 21 1F 09 1A 5F 00 5C 42 6B 12 33 D8 .(z.!..._.\Bk.3.

0010: 73 F0 58 DD 0D D9 09 09 09 09 09 09 09 09 09 09 s.X.............

pool-4-thread-2, WRITE: TLSv1 Alert, length = 32

pool-4-thread-2, Exception sending alert: java.net.SocketException: Broken pipe

pool-4-thread-2, called closeSocket()

Keep-Alive-Timer, called close()

Keep-Alive-Timer, called closeInternal(true)

Keep-Alive-Timer, SEND TLSv1 ALERT: warning, description = close_notify

Padded plaintext before ENCRYPTION: len = 32

0000: 01 00 FD 8B FE 50 2A 16 8A FC 10 F7 E0 05 7E D1 .....P*.........

0010: 0A 78 A0 03 84 26 09 09 09 09 09 09 09 09 09 09 .x...&..........

Keep-Alive-Timer, WRITE: TLSv1 Alert, length = 32

[Raw write]: length = 37

0000: 15 03 01 00 20 24 CC 05 7B DA AA 98 D7 BC 49 07 .... $........I.

0010: 59 94 A4 42 A1 D9 22 42 34 C2 75 1B 9E 36 F0 23 Y..B.."B4.u..6.#

0020: 58 9D 80 8D 38 X...8

Keep-Alive-Timer, called closeSocket(selfInitiated)

服务器端:

http-nio-8243-exec-2, READ: TLSv1 Handshake, length = 269

*** Certificate chain

***

http-nio-8243-exec-2, fatal error: 42: null cert chain

javax.net.ssl.SSLHandshakeException: null cert chain

%% Invalidated: [Session-5, TLS_RSA_WITH_AES_128_CBC_SHA]

http-nio-8243-exec-2, SEND TLSv1 ALERT: fatal, description = bad_certificate

http-nio-8243-exec-2, WRITE: TLSv1 Alert, length = 2

http-nio-8243-exec-2, fatal: engine already closed. Rethrowing javax.net.ssl.SSLHandshakeException: null cert chain

http-nio-8243-exec-2, called closeOutbound()

http-nio-8243-exec-2, closeOutboundInternal()

http-nio-8243-ClientPoller-1, called closeOutbound()

http-nio-8243-ClientPoller-1, closeOutboundInternal()

http-nio-8243-ClientPoller-1, SEND TLSv1 ALERT: warning, description = close_notify

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值