On 2015-07-17 4:44 PM, William A Rowe Jr wrote:
On Fri, Jul 17, 2015 at 9:18 AM, Yann Ylavic<[email protected]>  wrote:

Attached are the logs from both httpd and s_client, where we can see
that httpd somehow expects a client certificate during the
renegotiation (without sending any certificate request...), while
s_client obviously does not send anything like that (but its key
exchange).

I can't explain that... I'd need to debug.
Does this ring someone's bell?

Sure.  AIUI, LibreSSL stripped out TLS renegotiation as an 'unsafe thing'.

Some of our tests demonstrate per-dir renegotiation for stricter SSL
ciphers or client certs in specific contexts, but this would not be
a supported feature under LibreSSL if I understood their scope changes
correctly.  The test is right, IMHO.
Except these tests are going - atm - from more strict to less strict - if I understand the error_log output from "OpenSSL" - when the tests do not fail.

[Thu Jul 16 12:10:47.979101 2015] [ssl:info] [pid 385024:tid 515] [client 127.0.0.1:39154] AH01964: Connection to child 0 established (server loopback:8532) [Thu Jul 16 12:10:47.979609 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(1936): [client 127.0.0.1:39154] AH02645: Server name not provided via TLS extension (using default/first virtual host) [Thu Jul 16 12:10:48.043295 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(1841): [client 127.0.0.1:39154] AH02041: Protocol: TLSv1, Cipher: DHE-RSA-AES256-SHA (256/256 bits) [Thu Jul 16 12:10:48.107123 2015] [mpm_worker:error] [pid 467080:tid 1] AH00287: server is within MinSpareThreads of MaxRequestWorkers, consider raising the MaxRequestWorkers setting [Thu Jul 16 12:10:48.107283 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(243): [client 127.0.0.1:39154] AH02034: Initial (No.1) HTTPS request received for child 0 (server loopback:8532) [Thu Jul 16 12:10:48.107746 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(500): [client 127.0.0.1:39154] AH02220: Reconfigured cipher suite will force renegotiation [Thu Jul 16 12:10:48.107774 2015] [ssl:info] [pid 385024:tid 515] [client 127.0.0.1:39154] AH02221: Requesting connection re-negotiation
...
[Thu Jul 16 12:10:48.107868 2015] [ssl:info] [pid 385024:tid 515] [client 127.0.0.1:39154] AH02226: Awaiting re-negotiation handshake [Thu Jul 16 12:10:48.108182 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(1936): [client 127.0.0.1:39154] AH02645: Server name not provided via TLS extension (using default/first virtual host) [Thu Jul 16 12:10:48.114668 2015] [ssl:debug] [pid 385024:tid 515] ssl_engine_kernel.c(1841): [client 127.0.0.1:39154] AH02041: Protocol: TLSv1, Cipher: RC4-SHA (128/128 bits) [Thu Jul 16 12:10:48.114708 2015] [authz_core:debug] [pid 385024:tid 515] mod_authz_core.c(835): [client 127.0.0.1:39154] AH01628: authorization result: granted (no directives)

My understanding:

ssl_engine_kernel.c(1841): [client 127.0.0.1:39154] AH02041: Protocol: TLSv1, Cipher: DHE-RSA-AES256-SHA (256/256 bits)
is more strict/secure than

ssl_engine_kernel.c(1841): [client 127.0.0.1:39154] AH02041: Protocol: TLSv1, Cipher: RC4-SHA (128/128 bits)

(The cipher used in the test has been upgraded since, but still at 128 bits if I recall correctly).

If I understand your comment "

"Some of our tests demonstrate per-dir renegotiation for stricter SSL
ciphers or client certs in specific contexts"

This does not appear to me to be what is being tested now. I think the test need to start, somehow, at - let's say 128-bit- but goes to 256 bit when a different directory is requested.


Bill

More in general though - trying to think as OpenBSD might have been thinking re:
"Stricter SSL ciphers than original" connection.

I had the assumption (which is always dangerous)
that default behavior of servers and clients was to negotiate the strictest combination that
both supported. Key phrase: "assume default behavior".

I do not memorize CVE numbers, or even text - but renegotiate DOWN has become popular to attempt to lessen (break) security - such as logjam -

From https://access.redhat.com/articles/1456263
in which a man-in-the-middle attacker could downgrade vulnerable TLS connections to 512-bit export-grade cryptography. The attack affects any server that supports DHE_EXPORT ciphers. This attack can be conduted by pre-computation of the 512-bit primes given in two popular sets of weak Diffie-Hellman parameters, namely Apache's /httpd/ versions 2.1.5 to 2.4.7, and all versions of OpenSSL.

From above quote it seems that this has already been addressed in 2.4.8 and later, and maybe even in the 2.2.31 - but it "feels" as if the LibreSSL approach (no renegotiate) cuts off a line of attack - and, properly configured - a client-server should always be connecting at the most secure cipher possible.

Special situations:
"Beliefs" - the server should always determine the minimum level of ciphers "acceptable", and the highest that the client says to support should be used. There should never be a reason to go to a lower quality - hence, renegotiation at the request of the client should never be accepted. * Should the server determine that for a specific "Location"/"Directory" more strict levels are needed then a new handshake (renegotiate if you prefer) for a stricter cipher should start. However, based on the assumption above (the strictest cipher that the client has is already being used) - this should always fail because the client is not already at that level.

Reply via email to