1

There is application that uses OpenSSL 1.0.2g. Application is able to receive incoming connections and initiate outbound connection. Application sends ClientHello message during create outbound connection. In this time I see that versions of TLS are different in record layer and handshake layer.

enter image description here

The following flags are used to set in global context.

SSL_CTX_set_options(ssl_list[i].ctx, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION | SSL_OP_CIPHER_SERVER_PREFERENCE| SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1);

This behavior is expected according to RFC. But for me it's not clear why in another traces I see the same TLS versions in record layer and handshake layer.

Secure Sockets Layer
TLSv1.2 Record Layer: Handshake Protocol: Client Hello
    Content Type: Handshake (22)
    Version: TLS 1.2 (0x0303)
    Length: 122
    Handshake Protocol: Client Hello
        Handshake Type: Client Hello (1)
        Length: 101
        Version: TLS 1.2 (0x0303)

Thanks!

marked as duplicate by Steffen Ullrich tls Oct 8 '16 at 20:27

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • TLS version negotiation? The question seems good, the only point is that I do not really see a question in there. Are you asking why does it happen? If the RFC allows it and there is no clear security problem in doing it that way the developer may do it whichever way he wants. – grochmal Oct 8 '16 at 17:30
  • Yes, you're right. I'd like to know is there any programmatic way to change that? – Pavel Oct 8 '16 at 17:43

Browse other questions tagged or ask your own question.