ssl - 服务器在服务器问候后立即发送加密握手

标签 ssl handshake

在调查 Web 服务的相互 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 行是加密的之外,一切看起来都很正常。 它肯定包含“证书请求”和“服务器问候完成”,因为一切正常(并且客户端提供了自己的证书第 62 行),但我完全不了解如何加密消息行 61,因为我不明白客户端和服务器如何加密本来可以这么快就交换足够的数据来加密任何东西。

服务器使用的密码套件是TLS_RSA_WITH_AES_128_CBC_SHA。

任何关于如何尽早对其进行加密的见解都可以帮助我解决我正在调查的问题,因为非工作客户端在收到加密握手消息后立即发送 TCP RST。

最佳答案

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

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

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

关于ssl - 服务器在服务器问候后立即发送加密握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040875/

相关文章:

python - Python 中的 SSL : Why it doesn't send certificate to server?

python - 请求.exceptions.SSLError : [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl. c:590)

go - WebSocket 何时使用关闭握手

SSL 握手失败,出现 "sslv3 alert handshake failure:SSL alert number 40"

python - 如何获取 MIPSDK 的 ImageServer 的授权 token

php - Twilio PHP - SSL 证书 : self signed certificate in certificate chain

ssl - 使用多个客户端证书的 nginx 客户端身份验证

ssl - TLS 握手步骤

ssl - 如何测试 sslv3 是否在 jetty 8 中启用

powershell - CouchDB SSL CRT 到 PEM 文件