我正在用 java 编写一个程序,将官方发票信息发送到财政管理部门。该公共服务提供了证书以用于与 Web 服务的 SSL 连接,并加密请求正文消息中的一些特殊数据字段。
在客户端和服务器同意使用约定的密码套件(在本例中为 TLS_RSA_WITH_AES_128_CBC_SHA)进行通信后,我在握手阶段遇到 EOFException 错误。
遵循 SSL 协议,客户端使用新密码成功执行测试并将测试数据发送到服务器,因此服务器也可以重复相同的测试并确认它也能够加密和解密数据。并且此时服务器发送 EOFException。
这是 SSL 通信日志的最后一部分:
向服务器发送一个快速确认,确认我们知道与我们刚刚发送的客户端证书对应的私钥......
*证书验证
[写入] MD5 和 SHA1 哈希:len = 262
这里的二进制数据太大不显示
主要,写入:TLSv1 握手,长度 = 262
[原始写入]:长度 = 267
这里的二进制数据太大不显示
*告诉服务器我们正在更改为新建立的密码套件。所有进一步的消息都将使用我们刚刚建立的参数进行加密。*
主要,写入:TLSv1 更改密码规范,长度 = 1
[原始写入]:长度 = 6
0000: 14 03 01 00 01 01
...并以成功结束
..完成的
我们发送一条加密的 Finished 消息以验证一切正常。
验证数据:{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.......
主要,写入: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..hy_d..(r
0010: F7 8A 69 72 93 D8 09 09 09 09 09 09 09 09 09 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 #...
主要的,称为 closeSocket()
主要,称为 close()
main,称为 closeInternal(true)
我不知道导致这种失败的原因是什么,以及如何以编程方式影响过程中这一步的结果。我尝试强制使用客户端和服务器都识别的其他密码,例如 SSL_RSA_WITH_RC4_128_MD5,但错误仍然存在。关于如何解决这个问题的任何想法?