safe renegotiation: confirming consensus

Tomas Hoger thoger at
Tue May 4 09:07:57 CEST 2010

On Mon, 03 May 2010 16:28:32 +0200 Simon Josefsson
<simon at> wrote:

> Client behaviour:

[ ... ]

>   Clients will talk to servers that do not support the extension by
>   default, but will refuse any rehandshake attempts against those
>   servers.  This would cause operational problems: can we confirm that
>   NSS and/or OpenSSL clients behave like this?  Otherwise we probably
>   shouldn't enable it.

Both OpenSSL and NSS allow upgraded clients to connect to unupgraded
servers by default.

OpenSSL also allows upgraded clients to renegotiate with unupgraded
servers, see:

NSS does not allow upgraded clients to renegotiate with unupgraded
servers, but afaik both firefox and chromium allow renegotiation for
now.  This documents what options NSS offers:

> Server behaviour:

[ ... ]

>   Servers will accept connections from clients that do not support the
>   extension, but will refuse any rehandshake attempts with that
>   client. This is the important behaviour that closes the security
>   problem for GnuTLS servers.  I believe we have confirmed that
>   OpenSSL servers will behave like this.

Both OpenSSL and NSS servers behave like this by default.

> Q: do we need a priority string to describe the default behaviour?
> For example %PARTIAL_RENEGOTIATION?  The reason would if you want to
> say something like SECURE:%PARTIAL_RENEGOTIATION to get high-security
> defaults but still support renegotiation using our normal behaviour
> wrt renegotiation.

Something like this may be desired when the default for servers changes
to require safe initial negotiation in the future.
%{,UN}SAFE_RENEGOTIATION do not seem to allow specifying current
default behavior explicitly. Can it be less confusing to have
defaults for client/server set in gnutls_init?


More information about the Gnutls-devel mailing list