Re: fe-secure.c and SSL/TLS - Mailing list pgsql-hackers

From Jeffrey Walton
Subject Re: fe-secure.c and SSL/TLS
Date
Msg-id CAH8yC8kPjB9vOp=hr0JJhZhQQ7dcnL6p7U-=nbFea_a=m2KMFg@mail.gmail.com
Whole thread Raw
In response to Re: fe-secure.c and SSL/TLS  (Marko Kreen <markokr@gmail.com>)
List pgsql-hackers
> I could not get TLSv1.1+ with that.  But I'm working against
> Ubuntu 12.04 default OpenSSL.  I'll try with other versions too.
That looks like a Ubuntu 12.04 limitation: http://postimg.org/image/3ju4fu0y1/

I would bet the 1.0.0 version of OpenSSL is less that 1.0.0h:

$ ldd /usr/lib/x86_64-linux-gnu/libssl.so   linux-vdso.so.1 =>  (0x00007fffd9d84000)   libcrypto.so.1.0.0 =>
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
(0x00007f1e0691e000)   libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e0655e000)   libdl.so.2 =>
/lib/x86_64-linux-gnu/libdl.so.2(0x00007f1e06359000)   libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1
(0x00007f1e06142000)  /lib64/ld-linux-x86-64.so.2 (0x00007f1e06f6d000)
 

Gotta love back patching and broken versioning ;)

Jeff

On Sat, Nov 30, 2013 at 4:12 AM, Marko Kreen <markokr@gmail.com> wrote:
> On Sat, Nov 30, 2013 at 03:46:06AM -0500, Jeffrey Walton wrote:
>> >> I believe the "standard" way of achieving TLS1.0 and above is to use
>> >> the SSLv23_client_method() and then remove the SSL protocols with
>> >> SSL_OP_NO_SSLv2 and SSL_OP_NO_SSLv3. I have to use handwaiving around
>> >> "standard" because I don't believe its documented anywhere (one of the
>> >> devs told me its the standard way to do it.).
>> >
>> > Indeed - Python ssl module seems to achieve TLSv1.1 and it uses
>> > SSLv23_method().  But still no TLSv1.2.
>> It sounds like they are using the TLSv1_1_method(). You can check it
>> with Wireshark. The Client Hello will advertise the highest version of
>> the protocol supported. See http://postimg.org/image/e4mk3nhhl/.
>
> No, they are using SSLv23_method().  And I can confirm - I did small
> C program with SSLv23_method and SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3,
> and it requests up to TLSv1.1.
>
>> If Python is not advertising TLS 1.2, then they should use the
>> SSLv23_method() with SSL_OP_NO_SSLv2, SSL_OP_NO_SSLv3 and
>> SSL_OP_NO_TLSv1. That will get them TLS 1.1 and above. From ssl.h,
>> around line 605:
>>
>> #define SSL_OP_NO_SSLv2                    0x01000000L
>> #define SSL_OP_NO_SSLv3                    0x02000000L
>> #define SSL_OP_NO_TLSv1                    0x04000000L
>> #define SSL_OP_NO_TLSv1_2                0x08000000L
>> #define SSL_OP_NO_TLSv1_1                0x10000000L
>>
>> If you only want TLS 1.1 and 1.2, you can further trim your preferred
>> cipher list. TLS 1.1 did not add any ciphers, so your list might look
>> like (the TLS 1.0 ciphers can be used in TLS 1.1):
>
> I could not get TLSv1.1+ with that.  But I'm working against
> Ubuntu 12.04 default OpenSSL.  I'll try with other versions too.
>
>> Personally, I'd like to drop TLS 1.0 (even though the complaints are
>> mainly academic). But I think its still needed for interop. I've never
>> rolled a system without it enabled.
>
> Good thing in about libpq is that it knows server is OpenSSL.  Bad thing
> is that server may be old, so we need to support servers down to
> OpenSSL 0.9.7.  Which means TLSv1.0.



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [PATCH] avoid buffer underflow in errfinish()
Next
From: Kevin Grittner
Date:
Subject: Re: [GENERAL] pg_upgrade ?deficiency