Bug 62112 question

2018-04-03 Thread Jeff Baranski
Hi,

Thanks for fixing https://bz.apache.org/bugzilla/show_bug.cgi?id=62112.

There is one comment mentioning a proposal to back port to 2.4.x.

Is there any plan to merge it to 2.4.x, if so when? If not, what version will 
this actually come out in?

If there is anything else left to do before it can be merged or released, like 
updating docs or something I am happy to help if someone points me in the right 
direction...

Thoughts?

Thanks,
Jeff


Re: TLSv1.3

2018-04-03 Thread Mario Brandt
Hi Stefan,

On 3 April 2018 at 14:58, Stefan Eissing  wrote:
> Chrome 65.0.3325.181 and FF 58.0.2 both do not on my MacOS desktop.

With FF open the about:config page

Find
security.tls.version.max

set the value from 3 to 4

Cheers
Mario


Re: svn commit: r1827912 - in /httpd/httpd/trunk: CHANGES modules/ssl/ssl_engine_config.c modules/ssl/ssl_engine_init.c modules/ssl/ssl_policies.h modules/ssl/ssl_private.h modules/ssl/update_policies

2018-04-03 Thread Luca Toscano
All good now thanks!

Luca

2018-04-03 13:49 GMT+02:00 Stefan Eissing :

> My bad. Please try again with r1828220 or later.
>
> Cheers, Stefan
>
> > Am 01.04.2018 um 18:57 schrieb Luca Toscano :
> >
> > Hi Stefan
> >
> > 2018-03-28 13:15 GMT+02:00 :
> > Author: icing
> > Date: Wed Mar 28 11:15:18 2018
> > New Revision: 1827912
> >
> > URL: http://svn.apache.org/viewvc?rev=1827912&view=rev
> > Log:
> > On the trunk:
> > mod_ssl: add support for TLSv1.3 (tested with OpenSSL v1.1.1-pre3, other
> libs may
> >  need more sugar).
> >
> >
> > Modified:
> > httpd/httpd/trunk/CHANGES
> > httpd/httpd/trunk/modules/ssl/ssl_engine_config.c
> > httpd/httpd/trunk/modules/ssl/ssl_engine_init.c
> > httpd/httpd/trunk/modules/ssl/ssl_policies.h
> > httpd/httpd/trunk/modules/ssl/ssl_private.h
> > httpd/httpd/trunk/modules/ssl/update_policies.py
> >
> >
> >
> >
> > Modified: httpd/httpd/trunk/modules/ssl/ssl_engine_init.c
> > URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/
> ssl_engine_init.c?rev=1827912&r1=1827911&r2=1827912&view=diff
> > 
> ==
> > --- httpd/httpd/trunk/modules/ssl/ssl_engine_init.c (original)
> > +++ httpd/httpd/trunk/modules/ssl/ssl_engine_init.c Wed Mar 28 11:15:18
> 2018
> > @@ -601,6 +601,9 @@ static apr_status_t ssl_init_ctx_protoco
> >
> >  #else /* #if OPENSSL_VERSION_NUMBER < 0x1010L */
> >  /* We first determine the maximum protocol version we should
> provide */
> > -if (protocol & SSL_PROTOCOL_TLSV1_2) {
> > +if (SSL_HAVE_PROTOCOL_TLSV1_3 && (protocol & SSL_PROTOCOL_TLSV1_3))
> {
> > +prot = TLS1_3_VERSION;
> > +} else  if (protocol & SSL_PROTOCOL_TLSV1_2) {
> >  prot = TLS1_2_VERSION;
> >  } else if (protocol & SSL_PROTOCOL_TLSV1_1) {
> >  prot = TLS1_1_VERSION;
> > @@ -692,6 +708,9 @@ static apr_status_t ssl_init_ctx_protoco
> >
> >  /* Next we scan for the minimal protocol version we should provide,
> >   * but we do not allow holes between max and min */
> > +if (prot == TLS1_3_VERSION && protocol & SSL_PROTOCOL_TLSV1_2) {
> > +prot = TLS1_2_VERSION;
> > +}
> >  if (prot == TLS1_2_VERSION && protocol & SSL_PROTOCOL_TLSV1_1) {
> >  prot = TLS1_1_VERSION;
> >  }
> >
> >
> > it may be a misconfig from my side, but I get the following with openssl
> 1.1.0f (not TLS 1.3 afaics):
> >
> > ssl_engine_init.c: In function ‘ssl_init_ctx_protocol’:
> > ssl_engine_init.c:690:16: error: ‘TLS1_3_VERSION’ undeclared (first use
> in this function)
> >  prot = TLS1_3_VERSION;
> > ^~
> >
> > Adding the following bits makes everything work:
> >
> > Index: modules/ssl/ssl_engine_init.c
> > ===
> > --- modules/ssl/ssl_engine_init.c (revision 1828144)
> > +++ modules/ssl/ssl_engine_init.c (working copy)
> > @@ -685,9 +685,12 @@
> >
> >  #else /* #if OPENSSL_VERSION_NUMBER < 0x1010L */
> >  /* We first determine the maximum protocol version we should
> provide */
> > +#if SSL_HAVE_PROTOCOL_TLSV1_3
> >  if (SSL_HAVE_PROTOCOL_TLSV1_3 && (protocol & SSL_PROTOCOL_TLSV1_3))
> {
> >  prot = TLS1_3_VERSION;
> > -} else  if (protocol & SSL_PROTOCOL_TLSV1_2) {
> > +} else
> > +#endif
> > +if (protocol & SSL_PROTOCOL_TLSV1_2) {
> >  prot = TLS1_2_VERSION;
> >  } else if (protocol & SSL_PROTOCOL_TLSV1_1) {
> >  prot = TLS1_1_VERSION;
> > @@ -708,9 +711,11 @@
> >
> >  /* Next we scan for the minimal protocol version we should provide,
> >   * but we do not allow holes between max and min */
> > +#if SSL_HAVE_PROTOCOL_TLSV1_3
> >  if (prot == TLS1_3_VERSION && protocol & SSL_PROTOCOL_TLSV1_2) {
> >  prot = TLS1_2_VERSION;
> >  }
> > +#endif
> >  if (prot == TLS1_2_VERSION && protocol & SSL_PROTOCOL_TLSV1_1) {
> >  prot = TLS1_1_VERSION;
> >  }
> >
> >
> > Luca
>
>


Re: TLSv1.3

2018-04-03 Thread Stefan Eissing
Just added your patch for the latest libressl checks. Thanks!

If I run that version against Firefox Nightly, it negotiates TLSv1.3. That
is with OpenSSL 1.1.1-pre3; I have no test env for libressl.

Chrome 65.0.3325.181 and FF 58.0.2 both do not on my MacOS desktop.

Cheers,

Stefan

> Am 31.03.2018 um 22:42 schrieb Bernard Spil :
> 
> I'm running an Apache 2.5.1 snapshot from 2018-03-30 linked against
> 1.1.1-pre3 from 2018-03-20 (AKA beta 1).
> 
> If I connect to Apache with openssl 1.1.1 it makes a TLSv1.3
> connection. Qualys SSLLabs doesn't see the TLSv1.3 at all.
> Additionally, Apache doesn't start when SSLOpenSSLConfCmd is used
> (SSLOpenSSLConfCmd groups secp521r1:secp384r1:x25519)
> Negotiated connections default to x25519 which is not what I expect.
> 
> From another host:
> 
> % /usr/local/bin/openssl version
> OpenSSL 1.1.1-pre3 (beta) 20 Mar 2018
> 
> % /usr/local/bin/openssl s_client -connect test.brnrd.eu:443
> CONNECTED(0003)
> depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
> verify return:1
> depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
> verify return:1
> depth=0 CN = test.brnrd.eu
> verify return:1
> 
> ---
> No client certificate CA names sent
> Peer signing digest: SHA384
> Peer signature type: ECDSA
> Server Temp Key: X25519, 253 bits
> ---
> SSL handshake has read 2696 bytes and written 390 bytes
> Verification: OK
> ---
> New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
> Server public key is 384 bit
> Secure Renegotiation IS NOT supported
> Compression: NONE
> Expansion: NONE
> No ALPN negotiated
> Early data was not sent
> SSL-Session:
>Protocol  : TLSv1.3
>Cipher: TLS_AES_256_GCM_SHA384
>Session-ID:
>Session-ID-ctx:
>Master-Key:
>PSK identity: None
>PSK identity hint: None
>SRP username: None
>Start Time: 1522528505
>Timeout   : 7200 (sec)
>Verify return code: 0 (ok)
>Extended master secret: no
> ---
> 
> Firefox Nightly and Chrome don't negotiate TLSv1.3 either
> Am I expecting things that I should not? (Entirely possible :D)
> 
> Cheers, Bernard.
> 
> 
> 
> 2018-03-29 16:11 GMT+02:00 Stefan Eissing :
>> Done in r1827992.
>> 
>> Cheers,
>> Stefan
>> 
>>> Am 29.03.2018 um 12:56 schrieb Greg Stein :
>>> 
>>> On Thu, Mar 29, 2018 at 3:16 AM, Stefan Eissing 
>>>  wrote:
 ...
>>> That is the intention behind "SSLPolicy modern|intermediate|old" that 
>>> configures the TLS stack according to the Mozilla server-side-tls 
>>> recommendations. So, one does not have to mess with many directives to have 
>>> a site with an "A" SSL Labs rating.
>>> 
>>> Besides, except for data center setups, Apache will be used *only* with 
>>> https: (and http: redirects to https:) very, very soon. That shifts the 
>>> average expertise of an admin setting up a https: site.
>>> 
>>> Back to TLSv1.3:
>>> 
>>> I do not like to invent new config directives for a new TLS version either. 
>>> The protocol on/off switch is now in "SSLProtocol" and that's where it 
>>> should be. AFAIK, it's only the cipher list that needs special treatment 
>>> (if one wants to override defaults or what SSLPolicy will do for it, once a 
>>> recommendation is out).
>>> 
>>> Gotcha.
>>> 
>>> 
>>> So, looking at "SSLCipherSuite". It basically passes the string to the *SSL 
>>> library. The manual page makes a big explanation and tables of ciphers, but 
>>> the lists repeats basically how OpenSSL cipher strings work. It would be 
>>> better to scrap that and replace it with a link to 
>>> https://www.openssl.org/docs/man1.0.2/apps/ciphers.html, now that openssl 
>>> has nicer documentation)
>>> 
>>> Along the gist of your proposal, I think I'll expand "SSLCipherSuite" to 
>>> take more than 1 argument and look for optional prefixes to the suite 
>>> strings given, so one could do
>>> 
>>> Oooh! Yes. Looks great.
>>> 
>>> +1
>>> 
 ...
>>> 
>>> Cheers,
>>> -g
>>> 
>> 



Re: svn commit: r1827912 - in /httpd/httpd/trunk: CHANGES modules/ssl/ssl_engine_config.c modules/ssl/ssl_engine_init.c modules/ssl/ssl_policies.h modules/ssl/ssl_private.h modules/ssl/update_policies

2018-04-03 Thread Stefan Eissing
My bad. Please try again with r1828220 or later.

Cheers, Stefan

> Am 01.04.2018 um 18:57 schrieb Luca Toscano :
> 
> Hi Stefan
> 
> 2018-03-28 13:15 GMT+02:00 :
> Author: icing
> Date: Wed Mar 28 11:15:18 2018
> New Revision: 1827912
> 
> URL: http://svn.apache.org/viewvc?rev=1827912&view=rev
> Log:
> On the trunk:
> mod_ssl: add support for TLSv1.3 (tested with OpenSSL v1.1.1-pre3, other libs 
> may
>  need more sugar).
> 
> 
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/modules/ssl/ssl_engine_config.c
> httpd/httpd/trunk/modules/ssl/ssl_engine_init.c
> httpd/httpd/trunk/modules/ssl/ssl_policies.h
> httpd/httpd/trunk/modules/ssl/ssl_private.h
> httpd/httpd/trunk/modules/ssl/update_policies.py
> 
> 
> 
> 
> Modified: httpd/httpd/trunk/modules/ssl/ssl_engine_init.c
> URL: 
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_engine_init.c?rev=1827912&r1=1827911&r2=1827912&view=diff
> ==
> --- httpd/httpd/trunk/modules/ssl/ssl_engine_init.c (original)
> +++ httpd/httpd/trunk/modules/ssl/ssl_engine_init.c Wed Mar 28 11:15:18 2018
> @@ -601,6 +601,9 @@ static apr_status_t ssl_init_ctx_protoco
> 
>  #else /* #if OPENSSL_VERSION_NUMBER < 0x1010L */
>  /* We first determine the maximum protocol version we should provide */
> -if (protocol & SSL_PROTOCOL_TLSV1_2) {
> +if (SSL_HAVE_PROTOCOL_TLSV1_3 && (protocol & SSL_PROTOCOL_TLSV1_3)) {
> +prot = TLS1_3_VERSION;
> +} else  if (protocol & SSL_PROTOCOL_TLSV1_2) {
>  prot = TLS1_2_VERSION;
>  } else if (protocol & SSL_PROTOCOL_TLSV1_1) {
>  prot = TLS1_1_VERSION;
> @@ -692,6 +708,9 @@ static apr_status_t ssl_init_ctx_protoco
> 
>  /* Next we scan for the minimal protocol version we should provide,
>   * but we do not allow holes between max and min */
> +if (prot == TLS1_3_VERSION && protocol & SSL_PROTOCOL_TLSV1_2) {
> +prot = TLS1_2_VERSION;
> +}
>  if (prot == TLS1_2_VERSION && protocol & SSL_PROTOCOL_TLSV1_1) {
>  prot = TLS1_1_VERSION;
>  }
> 
> 
> it may be a misconfig from my side, but I get the following with openssl 
> 1.1.0f (not TLS 1.3 afaics):
> 
> ssl_engine_init.c: In function ‘ssl_init_ctx_protocol’:
> ssl_engine_init.c:690:16: error: ‘TLS1_3_VERSION’ undeclared (first use in 
> this function)
>  prot = TLS1_3_VERSION;
> ^~
> 
> Adding the following bits makes everything work:
> 
> Index: modules/ssl/ssl_engine_init.c
> ===
> --- modules/ssl/ssl_engine_init.c (revision 1828144)
> +++ modules/ssl/ssl_engine_init.c (working copy)
> @@ -685,9 +685,12 @@
> 
>  #else /* #if OPENSSL_VERSION_NUMBER < 0x1010L */
>  /* We first determine the maximum protocol version we should provide */
> +#if SSL_HAVE_PROTOCOL_TLSV1_3
>  if (SSL_HAVE_PROTOCOL_TLSV1_3 && (protocol & SSL_PROTOCOL_TLSV1_3)) {
>  prot = TLS1_3_VERSION;
> -} else  if (protocol & SSL_PROTOCOL_TLSV1_2) {
> +} else
> +#endif
> +if (protocol & SSL_PROTOCOL_TLSV1_2) {
>  prot = TLS1_2_VERSION;
>  } else if (protocol & SSL_PROTOCOL_TLSV1_1) {
>  prot = TLS1_1_VERSION;
> @@ -708,9 +711,11 @@
> 
>  /* Next we scan for the minimal protocol version we should provide,
>   * but we do not allow holes between max and min */
> +#if SSL_HAVE_PROTOCOL_TLSV1_3
>  if (prot == TLS1_3_VERSION && protocol & SSL_PROTOCOL_TLSV1_2) {
>  prot = TLS1_2_VERSION;
>  }
> +#endif
>  if (prot == TLS1_2_VERSION && protocol & SSL_PROTOCOL_TLSV1_1) {
>  prot = TLS1_1_VERSION;
>  } 
> 
> 
> Luca