[gnutls-devel] interoperability issue 3.3.x vs. 3.5.5

Stefan Bühler stbuehler at lighttpd.net
Wed Oct 26 14:52:42 CEST 2016


Hi,

On 10/26/2016 01:12 PM, Andreas Metzler wrote:
> Hello,
> 
> a gnutls server running 3.5.5 is not accessible by a client using GnuTLS
> 3.3.x. This popped up in Debian https://bugs.debian.org/841723 against
> 3.3.8 vs 3.5.5 but also applies to 3.3.25/3.5.5. It is reproducible with
> gnutls-serv and gnutls-cli without any special options (just
> --x509keyfile/--x509certfile).

I think the original bug in https://bugs.debian.org/841723 could be
about something else; gnutls-cli.out in message #40 shows receiving "554
S" instead of a ServerHello - the reporter probably didn't actually use
--starttls-proto=smtp, but without the real log it is hard to say.

That said I also reproduced the issue; the fault is with the older
version, as it requires a CertificateStatus message if ServerHello
included the (empty) "status_request" extension, although RFC 6066
explicitly states:

   Note that a server MAY also choose not to send a "CertificateStatus"
   message, even if has received a "status_request" extension in the
   client hello message and has sent a "status_request" extension in the
   server hello message.

So the new gnutls code doesn't do anything wrong by replying with an
empty "status_request" extension, even if there is no chance of sending
a CertificateStatus message, just the old versions can't handle it.

The new version handles this by passing optional = 1 in the call to
_gnutls_recv_handshake(GNUTLS_HANDSHAKE_CERTIFICATE_STATUS) in
status_request.c.

regards,
Stefan



More information about the Gnutls-devel mailing list