Patch for adding tls_honor_cipher_order
Jeroen van Meeuwen (Kolab Systems)
vanmeeuwen at kolabsys.com
Thu Oct 30 12:04:42 EDT 2014
On 2014-10-23 16:04, Wolfgang Breyha wrote:
> Kristian Kræmmer Nielsen wrote on 17/10/14 15:13:
>> The more important part of my previous mail are that there are issues
>> with
>> the patches that now have been merged into git. E.g. compression is
>> not
>> merged correctly and it is recommended to do negative list and not
>> positive lists of protocols.
>
> Yes, you're right. The patches in master tree have broken logic...
>
> Option documentation says:
> tls_versions: ssl2 ssl3 tls1_0 tls1_1 tls1_2
> Disable SSL/TLS protocols not in this list.
>
> Code says:
> + if (strstr(tls_versions, "tls1_2") == NULL) {
> +#if (OPENSSL_VERSION_NUMBER >= 0x1000105fL)
> + off |= SSL_OP_NO_TLSv1_2;
> +#else
> + syslog(LOG_ERR, "ERROR: TLSv1.2 configured, OpenSSL < 1.0.1e
> insufficient");
> +#endif
> + }
>
> Setting the NO_TLSv1_2 option does the opposite of the expected/wanted
> behavior.
You're aware though, that for the code to set NO_TLSv1_2 you would need
to explicitly set a list of TLS versions that does not include tls1_2,
such as:
tls_versions: sslv2 sslv3 tls1_0 tls1_1
Let's not forget the code starts off with SSL_OP_ALL -- probably also
not the best of ideas.
Should newer versions arrive (say, tls1_3), it would not be suppressed
(the corresponding NO_TLSv1.3 flag would not be set) until after *both*;
imap/tls.c is updated to handle a new value for the setting, and your
configuration is not updated (to include the new value tls1_3 for it
would otherwise be suppressed).
> I also would prefer a negative list as most other daemons like
> apache, exim, ... use. Maybe a more generic
> tls_openssl_options: no_ssl2 no_ssl3 no_compression
> prefer_server_cipher_order
> would be better?
>
A better way of specifying TLS versions would certainly be appreciated,
especially if the list of options translates to openssl flags directly,
so we don't have to patch/rebuild every time the flags change in order
to allow newer/better versions.
I recall needing to upgrade Apache httpd from version 2.2 to 2.4 in
order to be able to add -TLSv1.1:
SSLOptions all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
or, for that matter:
SSLOptions TLSv1.2
as neither flags were supported by httpd 2.2 -- admittedly, I could have
backported the fix/enhancement rather than upgrade.
Anyway, it's one of the things I wanted to prevent having to do in Cyrus
IMAP.
> And yes, you're also right with mentioning that functionality is
> missing.
> tls_compression: 0
> Enable TLS compression. Disabled by default.
>
This has been an oversight on my part.
> tls_eccurve: prime256v1
> Select the elliptic curve used for ECDHE.
> description is there, but there is no code doing it actually. Support
> for ECDH
> auto mode in Openssl 1.2+ as provided in
> https://bugzilla.cyrusimap.org/attachment.cgi?id=1535
> is missing in the documentation as well.
>
This patch and various other patches from different people in different
tickets did not really mix well. Along with the tls_compression having
been omitted, I did not consider documenting "auto" as a valid
configuration value.
I'm also not sure what you mean by OpenSSL 1.2+ -- do you mean OpenSSL
1.0.2+?
Kind regards,
Jeroen van Meeuwen
--
Systems Architect, Kolab Systems AG
e: vanmeeuwen at kolabsys.com
m: +41 79 951 9003
w: http://www.kolabsys.com
pgp: 9342 BF08
More information about the Info-cyrus
mailing list