New in NSS 3.20

New Functionality

The TLS library has been extended to support DHE ciphersuites in server applications.

New Functions

in ssl.h

SSL_DHEGroupPrefSet - Configure the set of allowed/enabled DHE group parameters that can be used by NSS for a server socket.

SSL_EnableWeakDHEPrimeGroup - Enable the use of weak DHE group parameters that are smaller than default minimum size of the library.

New Types

in sslt.h

SSLDHEGroupType - Enumerates the set of DHE parameters embedded in NSS that can be used with function SSL_DHEGroupPrefSet

New Macros

in ssl.h

SSL_ENABLE_SERVER_DHE - A socket option user to enable or disable DHE ciphersuites for a server socket

Notable Changes in NSS 3.20

The TLS library has been extended to support DHE ciphersuites in server applications.

For backward compatibility reasons, the server side implementation of the TLS library keeps all DHE ciphersuites disabled by default. They can be enabled with the new socket option SSL_ENABLE_SERVER_DHE and the SSL_OptionSet or the SSL_OptionSetDefault API.

The server side implementation of the TLS does not support session tickets while using a DHE ciphersuite (see bug 1174677).

Support for the following ciphersuites has been added:

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256

TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

TLS_DHE_DSS_WITH_AES_256_CBC_SHA256

By default, the server side TLS implementation will use DHE parameters with a size of 2048 bits when using DHE ciphersuites.

A new API SSL_DHEGroupPrefSet has been added to NSS, which allows a server application to select one or multiple of the embedded DHE parameters as the preferred parameters. The current implementation of NSS will always use the first entry in the array that is passed as a parameter to the SSL_DHEGroupPrefSet API. In future versions of the TLS implementation, a TLS client might show a preference for certain DHE parameters, and the NSS TLS server side implementation might select a matching entry from the set of parameters that have been configured as preferred on the server side.

NSS optionally supports the use of weak DHE parameters with DHE ciphersuites in order to support legacy clients. To enable this support, the new API SSL_EnableWeakDHEPrimeGroup must be used. Each time this API is called for the first time in a process, a fresh set of weak DHE parameters will be randomly created, which may take a long amount of time. Please refer to the comments in the header file that declares the SSL_EnableWeakDHEPrimeGroup API for additional details.

The size of the default PQG parameters used by certutil when creating DSA keys has been increased to use 2048 bit parameters.

The selfserv utility has been enhanced to support the new DHE features.

Bugs fixed in NSS 3.20

Compatibility

NSS 3.20 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.20 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.