OpenSSL TLS 1.1 and wrong version number
If you, like myself, have been living under a rock you’d be also surprised to know that OpenSSL didn’t support TLSv1.1 and TLSv1.2 until version 1.0.1 .
Found out that accidently by trying to disable TLSv1 in Nginx which was running on a RHEL5 box with OpenSSL 0.9.8e. Below is how TLS handshake looked when TLSv1.1 was deliberately requested:
$ openssl s_client -host some_host_name_here -port 443 -tls1_1 -state -msg CONNECTED(00000003) SSL_connect:before/connect initialization >>> TLS 1.1 Handshake [length 0096], ClientHello 01 00 00 92 03 02 54 e6 ea 6b bc f9 c7 bc 47 4e da a9 74 2e c8 27 c4 90 18 94 eb cf 21 40 ef 11 fe 09 a0 38 bf 2a 00 00 4c c0 14 c0 0a 00 39 00 38 00 88 00 87 c0 0f c0 05 00 35 00 84 c0 13 c0 09 00 33 00 32 c0 12 c0 08 00 9a 00 99 00 45 00 44 00 16 00 13 c0 0e c0 04 c0 0d c0 03 00 2f 00 96 00 41 00 0a 00 07 c0 11 c0 07 c0 0c c0 02 00 05 00 04 00 ff 01 00 00 1d 00 0b 00 04 03 00 01 02 00 0a 00 08 00 06 00 19 00 18 00 17 00 23 00 00 00 0f 00 01 01 SSL_connect:SSLv3 write client hello A >>> TLS 1.0 Alert [length 0002], fatal protocol_version 02 46 SSL3 alert write:fatal:protocol version SSL_connect:error in SSLv3 read server hello A 140075793618760:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:337: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 5 bytes and written 7 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.1 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1424419435 Timeout : 7200 (sec) Verify return code: 0 (ok) ---