Hi, I have two captures, one of an successful SSL handshake, and one of an unsuccessful SSL handshake (server never responded with server hello but instead sent a FIN,ACK). The successful one displays in wireshark protocol column as SSLv3, and in the decoding window shows like so:
The unsuccessful one shows in wireshark protocol column as merely SSL (not SSLv3), and in the decoding window as:
Both have SSL3.0 in the version field, so what subtle difference is wireshark detecting that makes it display as SSL rather than SSLv3 ? Thanks in advance for any help you can offer. asked 21 Sep '12, 02:39 adrian777uk |
One Answer:
The subtle difference is (without looking at the actual trace, so I might be wrong) that in the unsuccesful case, the SSL record has version 2 and the SSL handshake message has version 3.0. Does your SSL record start with 0x80 or with 0x16? In the transition from SSLv2 to SSLv3 backward compatibility was ensured by using a SSLv2 record layer header. But today most servers won't allow (the insecure) SSLv2 protocol, so if the client tries a SSLv2 compatible handshake, the server just denies the connection. answered 21 Sep '12, 03:30 SYN-bit ♦♦ |
Thanks. I think they both start with 22 (0x16) as they both have
in the header. Here's a more comprehensive dump of the unsuccessful one:
and the successful one:
OK, I just tested it myself, Wireshark will only set the info column to SSLv3 when it sees the ServerHello. I think this is due to the SSLv2, SSLv3 scenario I sketched in my first response. So in fact you have two (almost) identical ClientHello’s.
Then it is either the source IP which might not be allowed to connect or the server might limit the amount of connections? What kind of server are you running? Does the FIN come straight after the ClientHello or is there a delay between them?