Java 建立SSL连接时获取EOFEException错误

Java 建立SSL连接时获取EOFEException错误,java,ssl,eofexception,Java,Ssl,Eofexception,我正在用java编写一个程序,将官方发票信息发送给财政管理局。该公共服务提供了证书,用于与web服务的SSL连接,并对请求正文消息中的某些特殊数据字段进行加密 在客户端和服务器同意使用约定的密码套件(在本例中为TLS_RSA_和_AES_128_CBC_SHA)进行通信后,在握手阶段我遇到了一个EOFEException错误 遵循SSL协议,客户机使用新密码成功执行测试,并将测试数据发送到服务器,以便服务器也可以重复相同的测试,并确认它也能够加密和解密数据。在这一点上,服务器发送EOFEExce

我正在用java编写一个程序,将官方发票信息发送给财政管理局。该公共服务提供了证书,用于与web服务的SSL连接,并对请求正文消息中的某些特殊数据字段进行加密

在客户端和服务器同意使用约定的密码套件(在本例中为TLS_RSA_和_AES_128_CBC_SHA)进行通信后,在握手阶段我遇到了一个EOFEException错误

遵循SSL协议,客户机使用新密码成功执行测试,并将测试数据发送到服务器,以便服务器也可以重复相同的测试,并确认它也能够加密和解密数据。在这一点上,服务器发送EOFEException

以下是SSL通信日志的最后一部分:

向服务器发送一个快速确认,确认我们知道与刚才发送的客户端证书对应的私钥…

*认证

[写入]MD5和SHA1哈希:len=262

此处的二进制数据太大,无法显示

main,WRITE:TLSv1握手,长度=262

[原始写入]:长度=267

此处的二进制数据太大,无法显示

*告诉服务器我们正在更改为新建立的密码套件。所有进一步的消息都将使用我们刚刚建立的参数进行加密*

main,WRITE:TLSv1更改密码规范,长度=1

[原始写入]:长度=6

0000:140301001

。。。并以成功告终

…完成

我们发送一条加密完成的消息,以验证一切正常。

验证数据:{221、96、47、110、19、170、244、8、37、152、160、40}

。。。 客户端加密测试数据。

[写入]MD5和SHA1哈希:len=16

0000:14 00 00 0C DD 60 2F 6E 13 AA F4 08 25 98 A0 28…..`/n(

加密前填充的明文:len=48

0000:14 00 00 0C DD 60 2F 6E 13 AA F4 08 25 98 A0 28…..`/n(

0010:10 7F 85 11 EC 6D 5D ED 21 70 27 F4 DC 23 C0 9B.........m]!p'

0020:A7 6F C2 80 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B.o

main,WRITE:TLSv1握手,长度=48

*…并将测试数据发送到服务器,以便服务器可以执行相同的测试,并确认可以建立加密通信(53字节=48字节来自测试数据+5字节来自报头)*

[原始写入]:长度=53

0000:16 03 01 00 30 1C 17 08 0F 49 C9 6A 7A 8B 8C 48…0…I.jz..H

0010:BA 57 2D CB 06 46 1E 65 61 7C 5F 74 F2 08 AB 12.W-…F.ea.\u t

0020:91 47 72 8C 8F 84 0A CB D7 29 E2 FD 84 B2 FD 9E.Gr

0030:47 DC 13 60 B4 G.`

…服务器会以EOFEException错误进行响应

主,收到EOFEException:错误

main,处理异常:javax.net.ssl.SSLHandshakeException:远程主机已关闭

握手时的连接

%%无效:[会话1,TLS\u RSA\u与\u AES\u 128\u CBC\u SHA]

主,发送TLSv1警报:致命,描述=握手失败

加密前填充的明文:len=32

0000:02 28 BC 65 1A CA 68 87 79 84 5F 64 16 F5 28 72

0010:F7 8A 69 72 93 D8 09..ir

主,写入:TLSv1警报,长度=32

[原始写入]:长度=37

0000:15 03 01 00 20 0D 9A 35 18 B7 98 4B 7B AF 82 4E…5…K…N

0010:1A EE 7D AC 5D D5 49 05 4E 74 B9 77 E4 CD 87 61…).I.Nt.w…a

0020:23 03 5C 9C 7E#

main,称为closeSocket()

main,称为close()

main,称为closeInternal(true)

我不知道这种失败的原因是什么,也不知道如何通过编程影响过程中这一步的结果。我曾尝试强制使用客户端和服务器都能识别的其他密码,例如SSL\U RSA\U WITH_RC4\u 128\u MD5,但错误仍然存在。 你对如何解决这个问题有什么想法吗

你对如何解决这个问题有什么想法吗

我建议您与运行该服务的人员联系,让他们查看他们的日志,了解他们的服务器在SSL设置期间关闭连接的原因


(严格来说,服务器不会“响应[an]EOFEException错误”。它实际上是在关闭TCP连接,客户端Java库正在抛出异常。如果使用正确的术语,您可能会从服务的维护者那里得到更有用的响应。)

谢谢你的回答。我已经在尝试从财政管理IT人员那里获得一些帮助。祝你好运。FWIW-一位真正的SSL专家可能能够列出服务器可能在该点中断连接的可能原因。但是远程服务器的日志(希望如此)应该确定实际原因。我面临类似的异常情况。如果问题得到解决,是否有任何更新?服务器没有“响应
EOFException
错误”。服务器关闭了连接,导致客户端获得
EOFException