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

Reply via email to