On Wed, May 13, 2020 at 01:27:43AM +0300, Pavel Korovin wrote: > Dear all, > > After compiling/upgrading to the latest source with TLSv1.3 server code > enabled, > I've got Firefox SSL_ERROR_RX_MALFORMED_SERVER_HELLO when tried to access http > serviced by relayd. > Please find the diff for relayd(8) attached. > > Qualys SSL report for the box: > https://www.ssllabs.com/ssltest/analyze.html?d=waste.tristero.se&s=2001%3a470%3a1f15%3a1492%3a0%3a0%3a0%3a2 > > -- > With best regards, > Pavel Korovin
I think the default should match libtls and also include TLSFLAG_TLSV1_2 (see comment below). I have tested this patch with that modified and as far as I can tell, it works as intended and expected. Unless somebody speaks up, this is ok tb Please commit the manpage patch below along with it. > Index: parse.y > =================================================================== > RCS file: /cvs/src/usr.sbin/relayd/parse.y,v > retrieving revision 1.244 > diff -u -p -r1.244 parse.y > --- parse.y 12 Feb 2020 21:15:44 -0000 1.244 > +++ parse.y 12 May 2020 22:26:09 -0000 > @@ -1355,6 +1355,8 @@ flag : STRING { > $$ = TLSFLAG_TLSV1_1; > else if (strcmp("tlsv1.2", $1) == 0) > $$ = TLSFLAG_TLSV1_2; > + else if (strcmp("tlsv1.3", $1) == 0) > + $$ = TLSFLAG_TLSV1_3; > else if (strcmp("cipher-server-preference", $1) == 0) > $$ = TLSFLAG_CIPHER_SERVER_PREF; > else if (strcmp("client-renegotiation", $1) == 0) > Index: relay.c > =================================================================== > RCS file: /cvs/src/usr.sbin/relayd/relay.c,v > retrieving revision 1.250 > diff -u -p -r1.250 relay.c > --- relay.c 13 Jul 2019 06:53:00 -0000 1.250 > +++ relay.c 12 May 2020 22:26:09 -0000 > @@ -2066,6 +2066,8 @@ relay_tls_ctx_create_proto(struct protoc > protocols |= TLS_PROTOCOL_TLSv1_1; > if (proto->tlsflags & TLSFLAG_TLSV1_2) > protocols |= TLS_PROTOCOL_TLSv1_2; > + if (proto->tlsflags & TLSFLAG_TLSV1_3) > + protocols |= TLS_PROTOCOL_TLSv1_3; > if (tls_config_set_protocols(tls_cfg, protocols) == -1) { > log_warnx("could not set the TLS protocol: %s", > tls_config_error(tls_cfg)); > Index: relayd.h > =================================================================== > RCS file: /cvs/src/usr.sbin/relayd/relayd.h,v > retrieving revision 1.260 > diff -u -p -r1.260 relayd.h > --- relayd.h 15 Sep 2019 19:23:29 -0000 1.260 > +++ relayd.h 12 May 2020 22:26:09 -0000 > @@ -695,15 +695,16 @@ TAILQ_HEAD(relay_rules, relay_rule); > #define TLSFLAG_TLSV1_0 0x02 > #define TLSFLAG_TLSV1_1 0x04 > #define TLSFLAG_TLSV1_2 0x08 > -#define TLSFLAG_TLSV1 0x0e > +#define TLSFLAG_TLSV1_3 0x10 > +#define TLSFLAG_TLSV1 0x1e > #define TLSFLAG_VERSION 0x1f > #define TLSFLAG_CIPHER_SERVER_PREF 0x20 > #define TLSFLAG_CLIENT_RENEG 0x40 > #define TLSFLAG_DEFAULT \ > - (TLSFLAG_TLSV1_2|TLSFLAG_CIPHER_SERVER_PREF) > + (TLSFLAG_TLSV1_3|TLSFLAG_CIPHER_SERVER_PREF) #define TLSFLAG_DEFAULT \ (TLSFLAG_TLSV1_2|TLSFLAG_TLSV1_3|TLSFLAG_CIPHER_SERVER_PREF) > > #define TLSFLAG_BITS \ > - "\06\01sslv3\02tlsv1.0\03tlsv1.1\04tlsv1.2" \ > + "\06\01sslv3\02tlsv1.0\03tlsv1.1\04tlsv1.2\05tlsv1.3" \ > "\06cipher-server-preference\07client-renegotiation" > > #define TLSCIPHERS_DEFAULT "HIGH:!aNULL" Index: relayd.conf.5 =================================================================== RCS file: /var/cvs/src/usr.sbin/relayd/relayd.conf.5,v retrieving revision 1.196 diff -u -p -r1.196 relayd.conf.5 --- relayd.conf.5 2 May 2020 19:02:57 -0000 1.196 +++ relayd.conf.5 14 May 2020 05:48:10 -0000 @@ -1015,6 +1015,9 @@ Disable TLS session tickets. supports stateless TLS session tickets (RFC 5077) to implement TLS session resumption. The default is to enable session tickets. +.It Ic no tlsv1.3 +Disable the TLSv1.3 protocol. +The default is to enable TLSv1.3. .It Ic no tlsv1.2 Disable the TLSv1.2 protocol. The default is to enable TLSv1.2. @@ -1027,8 +1030,9 @@ Enable all TLSv1 protocols. This is an alias that includes .Ic tlsv1.0 , .Ic tlsv1.1 , +.Ic tlsv1.2 , and -.Ic tlsv1.2 . +.Ic tlsv1.3 . The default is .Ic no tlsv1 . .It Ic tlsv1.0