Re: Doubt regarding ssl options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 31/01/22 10:27, Srinivas, Saketh (c) wrote:
Hi,

what is the difference between  SSL_CTX_set_min_proto_version and SSL_set_min_proto_version.
How will they effect the SSL handsahke.

I can see two versions numbers in the PCAP files, 
  1. content type is handshake , version v1.0
  2. handshake type client hello, version v1.2
what is the difference and how to modify them.



The effect of SSL_CTX_set_min_proto_version and SSL_set_min_proto_version is exactly the same - it sets the minimum TLS/SSL proto version to be used during the client/server handshake (exchange of "hello" messages).

The TLS/SSL version mentioned during "content type = handshake" is known as the record layer version number. If you read the TLS 1.2 spec (https://datatracker.ietf.org/doc/html/rfc5246) you will find
" Earlier versions of the TLS specification were not fully clear on
   what the record layer version number (TLSPlaintext.version) should
   contain when sending ClientHello (i.e., before it is known which
   version of the protocol will be employed).  Thus, TLS servers
   compliant with this specification MUST accept any value {03,XX} as
   the record layer version number for ClientHello.
"

Check out this snippet of code (line numbers are from openssl 1.1.1k, file "ssl/record/rec_layer_s3.c"):

 849         /*
 850          * Some servers hang if initial client hello is larger than 256 bytes
 851          * and record version number > TLS 1.0
 852          */
 853         if (SSL_get_state(s) == TLS_ST_CW_CLNT_HELLO
 854                 && !s->renegotiate
 855                 && TLS1_get_version(s) > TLS1_VERSION
 856                 && s->hello_retry_request == SSL_HRR_NONE)
 857             version = TLS1_VERSION;
 858         SSL3_RECORD_set_rec_version(thiswr, version);

which shows that OpenSSL explicitly sets the *record* version number to TLS 1.0 ; one could argue whether such buggy servers still exist and whether there should be an option to overrule the above behaviour.

Thus, this is not affected by any calls to SSL_CTX_set_min_proto_version or SSL_set_min_proto_version.
However, the above is safe in terms of "it works with buggy servers" as well as safe in terms of "the connection *will* use tls 1.2+ if I call SSL_{ctx_}set_min_proto_version" so why change?

Hope this clarifies things,

JJK / Jan Just Keijser


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux