建立SSL连接时出现EOFException错误

3
我正在编写一个Java程序,向财政管理部门发送官方发票信息。这个公共服务提供了用于SSL连接到Web服务的证书,并加密请求消息体中的一些特殊数据字段。
在客户端和服务器使用同意的密码套件TLS_RSA_WITH_AES_128_CBC_SHA通信之后,在握手阶段时我遇到了EOFException错误。
按照SSL协议,客户端使用新的密码套件成功完成测试,并将测试数据发送到服务器,以便服务器也可以重复相同的测试并确认其也能够加密和解密数据。在这一点上,服务器发送EOFException。
以下是SSL通信日志的最后部分:
向服务器发送一个快速确认,以验证我们知道对应于刚刚发送的客户端证书的私钥...... * CertificateVerify [写入] MD5和SHA1散列:len = 262 二进制数据太大,无法显示在这里 主要,WRITE:TLSv1握手,长度= 262 [原始写入]:长度= 267 二进制数据太大,无法显示在这里 * 告诉服务器我们正在更改到新建立的加密套件。所有后续消息都将使用我们刚刚建立的参数进行加密。* 主要,WRITE:TLSv1 Change Cipher Spec,长度= 1 [原始写入]:长度= 6 0000: 14 03 01 00 01 01 ...并以成功结束 ..Finished 我们发送了一个加密的Finished消息来验证一切是否正常。 verify_data:{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 .o.............. 主要,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._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..。 ...然后服务器用EOFException错误响应 主要,收到EOFException:错误 主要,处理异常:javax.net.ssl.SSLHandshakeException:远程主机关闭 连接期间的握手 %%无效:[会话-1,TLS_RSA_WITH_AES_128_CBC_SHA] 主要,发送TLSv1警报:致命,描述= handshake_failure 填充的明文在加密之前:len = 32 0000:02 28 BC 65 1A CA 68 87 79 84 5F 64 16 F5 28 72 .(.e..h.y._d..(r 0010:F7 8A 69 72 93 D8 09 09 09 09 09 09 09 09 09 09 ..ir............ 主要,WRITE:TLSv1 Alert,长度= 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 7

我不知道这种失败的原因是什么,也不知道如何在程序上影响此步骤的结果。我尝试强制使用其他客户端和服务器都认可的密码,例如 SSL_RSA_WITH_RC4_128_MD5,但错误仍然存在。 有什么想法解决这个问题吗?


服务器没有“响应EOFException错误”。服务器关闭了连接,这导致客户端收到了EOFException - user207421
1个回答

2
您有什么想法来解决这个问题吗?
我建议您联系运行该服务的人,并要求他们查看其日志,以查明在 SSL 设置期间为什么服务器关闭连接。
(严格来说,服务器并不会“使用 [an] EOFException 错误”响应。它实际上是关闭TCP连接,而客户端 Java 库正在抛出异常。如果您使用正确的术语,那么从服务维护者那里可能会得到更有帮助的响应。)

谢谢你的回答。我已经在尝试从财政管理IT团队那里获得一些帮助。 - Jose Silva
祝好运。顺便说一句,真正的SSL专家可能能够列出服务器在那一点上可能断开连接的可能原因。但远程服务器的日志(希望如此)应该能够确定实际原因。 - Stephen C
我遇到了类似的异常.. 请问这个问题已经解决了吗? - vegeta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接