服务器在服务器Hello之后立即发送加密握手

时间:2015-03-13 19:54:54

标签: ssl handshake

在调查针对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。

1 个答案:

答案 0 :(得分:1)

经过深入调查后,实际上看起来没有真正的加密握手消息:wireshark在拆分时无法重新组合握手记录。由于此问题,加密握手消息实际上是一个工件。

由于记录最大长度为2 ^ 14字节,每当握手消息较长时,它将被分割为多个记录。

Wireshark以及我的“失败客户端”似乎无法重建这些拆分记录。 看起来像wireshak中已知的未修复的错误:https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3303