0

There is a server app that supports TLSv1...TLSv1.3 with OpenSSL 3. I'm connecting to it with mysql client app, version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper, command line

mysql --ssl_ca=<path-to-ca-cert-pem> --ssl_cipher=ECDHE-RSA-AES256-GCM-SHA384

My expectation that when connecting to the server (the app), mysql only reports ECDHE-RSA-AES256-GCM-SHA384 as a supported cipher and thus server will use it.

Instead connection uses TLS_AES_256_GCM_SHA384. The wireshark shows that ClientHello message lists the following ciphers:

Cipher Suites (5 suites)
    Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302)
    Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303)
    Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
    Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)

The similar behavior is when using Python client.

What makes clients extend explicitly specified cipher without any warning / notification?

1 Answer 1

1

The first 4 of the unexpected ciphers are TLS 1.3 ciphers, which are not covered by this configuration option. From the documentation:

ssl_cipher
...
List of permitted ciphers or cipher suites to use for TLS. Besides cipher names, if MariaDB was compiled with OpenSSL, this variable could be set to "SSLv3" or "TLSv1.2" to allow all SSLv3 or all TLSv1.2 ciphers. Note that the TLSv1.3 ciphers cannot be excluded when using OpenSSL, even by using this system variable.

The last (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) is a pseudo-cipher which is not a real cipher but more a hack, and thus also not covered by this configuration option. To cite from RFC 5746:

In order to enhance compatibility with such servers, this document defines a second signaling mechanism via a special Signaling Cipher Suite Value (SCSV) "TLS_EMPTY_RENEGOTIATION_INFO_SCSV", with code point {0x00, 0xFF}. This SCSV is not a true cipher suite (it does not correspond to any valid set of algorithms) and cannot be negotiated. Instead, it has the same semantics as an empty "renegotiation_info" extension, as described in the following sections.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .