Considering a setup like this:

    # intermediate configuration
    ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets

The bind options set prefer-client-ciphers. The client can choose, but is that choice limits to my provided bind ciphers, or not?

The HaProxy documentation doesn't say: https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#5.1-prefer-client-ciphers

1 Answer 1


This answer is not based on Haproxy specifically but general TLS behavior:

The TLS client and the TLS server each has a list of ciphers that it can support/accept, these lists are ordered by their respective preference.

During the TLS handshake, the client sends its list of supported ciphers, and the server then has to decide what to actually use.
As long as there is an overlap between their respective lists, it will be possible to pick a cipher that everyone supports and it will be possible to establish a connection.

However, even with such an overlap, the order of their respective lists (ie, their respective preference) may differ.

What this almost universally available setting (the name is different in different software, also often seen with the opposite perspective) determines whose preference should win.

For a long time the typical argument among server operators has been something along the lines "server side wins, don't let that silly client pick some weak cipher we have at the very end of our list" (unless it's absolutely necessary).
However, more recently there has been a movement towards "don't include any cipher we consider weak and let the client have their pick; low-end clients (IoT, lower end mobile devices, and similar) may benefit greatly from being able to pick ChaCha20 over AES".

TL;DR No, the chosen cipher will have to be one that is supported by both the client and the server or the connection will not be established, regardless whose preference wins based on that setting.

  • Thank you for the clear explanation.
    – KoenDG
    Jan 3 at 9:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.