On Fri, Dec 05, 2014 at 02:14:54PM +0100, Tomas Hoger wrote: > On Thu, 4 Dec 2014 10:57:11 +0100 Kurt Roeckx wrote: > > > > It seems *TLS*_VERSION constants are meant to be used to set > > > minimum / maximum. A drawback of such approach is that > > > applications need to be recompiled and/or modified when OpenSSL is > > > updated with support for newer protocol version, if use of the new > > > version is to be controlled via this API. > > > > So if I understand you right, say that we make a release that > > support up to TLS 1.2 and your application is compiled against > > that. That would mean it will only know how to set the minimum > > and maximum to TLS 1.2. If I then add support for TLS 1.3 there > > would be no way to say that TLS 1.3 should be the minimum without > > adding support for that in the application? > > Right. Look at it with your Debian openssl packages maintainer hat on - > how many packages need to be modified to support 1.3?
I hope that with the other changes I'm working on to drop the functions like TLSv1_* methods that should sort itself all out. I've dropped SSLv3_client_method() in experimental and you suddenly find things that will only support SSLv3. And that's just great if you know that testing dropped SSLv3 support from the SSLv23_* methods. So it's my hope that with API changes we can avoid this mess in the future. > > > SSLProtocolMin "TLSv1.0" > > > > > > instead of > > > > > > SSLProtocol all -SSLv2 -SSLv3 > > > > > > Or maybe have a way to control protocol versions via cipher suite > > > string. Similar to what GnuTLS does with its priority string, which > > > can set ciphers, protocol versions, etc. > > > > I was thinking about that too before. We already have SECLEVEL in > > there now (in 1.0.2). > > What is the SECLEVEL you refer to? I had a quick look at SSL_CONF API > pointed out by Stephen. I see it can do what I asked for (not the > min/max way, but the httpd-like way). It might be underdocumented. From what I understand, the higher you set it to more secure it should be. Looking at the code it currently has things like: static const int minbits_table[5] = {80, 112, 128, 192, 256}; [...] minbits = minbits_table[level - 1]; [...] /* Level 2: no RC4 */ /* Level 3: forward secure ciphersuites only */ /* SSLv3 not allowed on level 2 */ /* TLS v1.1 and above only for level 3 */ /* TLS v1.2 only for level 4 and above */ Kurt ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager majord...@openssl.org