Re: curl with openssl not honoring MaxProtocol in openssl conf

Jeffrey Walton via curl-users <[email protected]>
Newsgroups gmane.comp.web.curl.general
Message-ID <CAH8yC8m7xnMyLPz_ParVTHSqU3MDUyoYA-bCxdYu=MZzSxdHsA@mail.gmail.com>
On Tue, Jan 3, 2023 at 11:53 AM Andreas Hasenack via curl-users
<[email protected]> wrote:
> [...]
> In the case of curl, it seems to work fine for other parameters (well,
> one I tested). For example, I can use "MinProtocol = TLSv1.3", and
> when I try to use curl to connect to a TLSv1.2-only server, it
> correctly fails:
>
> Client:
> openssl config:
> [system_default_sect]
> CipherString = DEFAULT:@SECLEVEL=2
> MinProtocol = TLSv1.3
>
> $ curl -o /dev/null https:/j-server.lxd:4433
>   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
>                                  Dload  Upload   Total   Spent    Left  Speed
>   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
> curl: (35) error:0A00042E:SSL routines::tlsv1 alert protocol version
>
> Server:
> $ openssl s_server -cert j-server.pem -key j-server.key -tls1_2
> Using default temp DH parameters
> ACCEPT
> ERROR
> 4037AA6B3E7F0000:error:0A000102:SSL
> routines:tls_early_post_process_client_hello:unsupported
> protocol:../ssl/statem/statem_srvr.c:1657:
> shutting down SSL
> CONNECTION CLOSED
>
> So for this combo Max/MinProtocol, it's just the MaxProtocol one that
> isn't being followed. Granted it's the less useful one, as usually we
> want to restrict old suites.

A small nit... SSL/TLS does _not_ have a min and max protocol version.
There's a record layer version,[1] and a handshake version.[2]
Specifying record layer version = TLS v1.0 and handshake version = TLS
1.3 does not mean the set of protocols in the range [v1.0, v1.3].

The record layer carries all of the protocol messages. It is usually
selected as the minimum version the client and server can use to
communicate. The record layer carries the Hello's and other
administrative messages.

The handshake version is agreed upon, and selects the key exchange and
bulk encryption algorithms. TLS v1.2 is usually desired because it
MACs more fields than TLS 1.0 and below. You won't know which fields
to MAC until you select a handshake version. (TLS v1.1 did not change
anything. It merely added elliptic curve gear). TLS v1.3 is also
desired because it offers cipher suites with strong authentication
properties.

The TLS Working group declined to make the versions a range. Their
argument was there may be "holes" in the range. For example, a web
server might offer TLS v1.0 and v1.3, but not v1.1 and v1.2.

Jeff

[1] https://www.rfc-editor.org/rfc/rfc5246.html#section-6.2
[2] https://www.rfc-editor.org/rfc/rfc5246.html#section-7.3
-- 
Unsubscribe: https://lists.haxx.se/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.