Сервер отправляет зашифрованное рукопожатие сразу после приветствия сервера

Во время исследования проблемы взаимной аутентификации 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 Done", так как все работает нормально (и клиент предоставляет собственную строку сертификата 62), но я абсолютно не понимаю, как можно зашифровать строку сообщения 61, так как я не понимаю, как клиент и сервер мог обменяться достаточным количеством данных, чтобы зашифровать что-нибудь так скоро

Сервер шифров, используемый сервером, называется TLS_RSA_WITH_AES_128_CBC_SHA.

Любое понимание того, как это может быть зашифровано так рано, может помочь мне решить проблему, которую я исследую, поскольку нерабочий клиент отправляет TCP RST сразу после получения сообщения Encrypted Handshake.

1 ответ

После глубокого изучения, на самом деле похоже, что реального Зашифрованного сообщения о рукопожатии нет: wireshark не может перегруппировать записи рукопожатия, когда они разделены. Сообщение зашифрованного рукопожатия фактически является артефактом из-за этой проблемы.

Поскольку максимальная длина записи составляет 2^14 байт, всякий раз, когда рукопожатие длиннее, оно разделяется на несколько записей.

Wireshark, как и мой "сбойный клиент", похоже, не могут восстановить эти разделенные записи. Похоже на известную нефиксированную ошибку в wirehak: https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3303

Другие вопросы по тегам