diff options
author | Mikkel Krautz <mikkel@krautz.dk> | 2015-09-26 23:19:20 +0300 |
---|---|---|
committer | Mikkel Krautz <mikkel@krautz.dk> | 2015-09-26 23:33:49 +0300 |
commit | 8bd3f76a8ea3d8751c0305cfcaaa3592d2ffa9b2 (patch) | |
tree | ae2b78600bb8e09f5f9c25a6804f41ff5aff7e75 /src/murmur/Server.h | |
parent | b6276544a1f46f186bf929f4b27b616245b013ce (diff) |
Murmur: add support for EDH cipher suites, and for specifying Diffie-Hellman parmeters.
This change allows server admins to specify Diffie-Hellman
parameters for Murmur to use. This is done using the sslDHParams
option in the config file. Diffie-Hellman parameters can also be
set on a per-server basis using the sslDHParams option.
Note: the functionality implemented in this change requires the
QSslDiffieHellmanParameters class in Qt, which has not yet landed
upstream in the Qt 5 'dev' branch. This means that the functionality
discussed in this change will, for now, only work in binaries provided
by the Mumble project, or binaries that are built using our build
environments, and not binaries that link against any released versions
of Qt at present.
This change modifies the default TLS cipher suite string to add
EDH+aRSA+AESGCM, DHE-RSA-AES256-SHA and DHE-RSA-AES128-SHA.
This yields the following ciphers, in TLS/RFC notation:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
This change also allows Murmur servers to provide forward secrecy
to older clients, such as our own pre-built binaries before 1.2.9.
It also provides forward secrecy for users that use Mumble 1.2.x
versions on Linux distros, and other Unix-like systems. This is
because Mumble 1.2.x on Unix-like systems builds against Qt 4, which
limits the connection to TLS 1.0.
Before this change, Murmur was not able to negotiate an ephemeral
Diffie-Hellman key exchange for those clients. This is now possible.
Diffstat (limited to 'src/murmur/Server.h')
-rw-r--r-- | src/murmur/Server.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/murmur/Server.h b/src/murmur/Server.h index 19e26706e..d437d68e1 100644 --- a/src/murmur/Server.h +++ b/src/murmur/Server.h @@ -49,6 +49,9 @@ #include <QtNetwork/QSslKey> #include <QtNetwork/QSslSocket> #include <QtNetwork/QTcpServer> +#if defined(USE_QSSLDIFFIEHELLMANPARAMETERS) +# include <QtNetwork/QSslDiffieHellmanParameters> +#endif #ifdef Q_OS_WIN #include <windows.h> #endif @@ -168,6 +171,9 @@ class Server : public QThread { QList<QSslCertificate> qlCA; QSslCertificate qscCert; QSslKey qskKey; +#if defined(USE_QSSLDIFFIEHELLMANPARAMETERS) + QSslDiffieHellmanParameters qsdhpDHParams; +#endif Timer tUptime; |