在调查针对webservice的相互SSL身份验证问题时,我已经使用wireshark跟踪SOAP UI客户端和服务器之间的工作行为,以便了解它的行为方式,因为我发现了一些奇怪的东西。
当客户端和服务器之间的握手和通信正确时,我仍然会注意到同样奇怪的行为;这是以下内容:
37. Client -> Server: Client Hello
54. Server -> Client: Server Hello, Certificate
61. Server -> Client: Encrypted Handshake Message
62. Client -> Server: Certificate, Client Key Exchange
64. Client -> Server: Certificate Verify
65. Client -> Server: Change Cipher Spec
66. Client -> Server: Encrypted Handshake Message
69. Server -> Client: Change Cipher Spec
74. Server -> Client: Encrypted Handshake Message
75. Client -> Server: Application Data
...
434. Server -> Client: Application Data
686. Server -> Client: Encrypted Alert
除了第61行加密外,一切似乎都很正常。 它肯定包含"证书申请"和"服务器Hello完成"因为一切正常(并且客户端提供了自己的证书行62),但我完全不了解消息行61如何加密,因为我不明白客户端和服务器如何交换足够的数据来加速任何事情。
服务器使用的密码套件为TLS_RSA_WITH_AES_128_CBC_SHA。
有关如何及早加密的任何见解可以帮助我解决我正在调查的问题,因为非工作客户端在收到加密握手消息后立即发送TCP RST。
答案 0 :(得分:1)
经过深入调查后,实际上看起来没有真正的加密握手消息:wireshark在拆分时无法重新组合握手记录。由于此问题,加密握手消息实际上是一个工件。
由于记录最大长度为2 ^ 14字节,每当握手消息较长时,它将被分割为多个记录。
Wireshark以及我的“失败客户端”似乎无法重建这些拆分记录。 看起来像wireshak中已知的未修复的错误:https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3303