diff options
author | Steffan Karger <steffan@karger.me> | 2015-01-01 20:46:09 +0100 |
---|---|---|
committer | Gert Doering <gert@greenie.muc.de> | 2015-01-04 13:53:56 +0100 |
commit | bd9aa06feb41838689ed01f79845bc765f887ae3 (patch) | |
tree | 442b4f8fa33f93fded9550f5dc1a0ba0af968b56 /src/openvpn/options.c | |
parent | 98ea2ec5d8085a6b7bd4ac125a68bd4d5cf3e092 (diff) | |
download | openvpn-bd9aa06feb41838689ed01f79845bc765f887ae3.tar.gz openvpn-bd9aa06feb41838689ed01f79845bc765f887ae3.tar.xz openvpn-bd9aa06feb41838689ed01f79845bc765f887ae3.zip |
Add option to disable Diffie Hellman key exchange by setting '--dh none'
As requested on the mailing list and in trac ticket #410, add an option to
disable 'traditional' Diffie Hellman key exchange. People want to be able
to create ecdh-only configurations.
This patch also disables RSA key exchange by default for OpenSSL builds, to
prevent that people who set "--dh none" but have an OpenSSL version that
doesn't support ECDH end up with a less secure connection. Note that users
that specify their own --tls-cipher override these defaults and thus can
still use whatever OpenSSL supports (and might thus end up with less secure
connections).
PolarSSL does not allow to easily disable RSA key exchange during runtime,
but its default compile options do not include RSA key exchange based
cipher suites.
Finally update the manpage to reflect the new behaviour, and while touching
it change the text to motivate users towards a more secure configuration.
v2 - disable RSA key exchange by default
Signed-off-by: Steffan Karger <steffan@karger.me>
Acked-by: Arne Schwabe <arne@rfc2549.org>
Message-Id: <1420141569-11773-1-git-send-email-steffan@karger.me>
URL: http://article.gmane.org/gmane.network.openvpn.devel/9376
Signed-off-by: Gert Doering <gert@greenie.muc.de>
Diffstat (limited to 'src/openvpn/options.c')
-rw-r--r-- | src/openvpn/options.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/openvpn/options.c b/src/openvpn/options.c index f6e0855..4ea03d1 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2134,10 +2134,6 @@ options_postprocess_verify_ce (const struct options *options, const struct conne (options->shared_secret_file != NULL) > 1) msg (M_USAGE, "specify only one of --tls-server, --tls-client, or --secret"); - if (options->tls_server) - { - notnull (options->dh_file, "DH file (--dh)"); - } if (options->tls_server || options->tls_client) { #ifdef ENABLE_PKCS11 @@ -2497,6 +2493,16 @@ options_postprocess_mutate (struct options *o) for (i = 0; i < o->connection_list->len; ++i) options_postprocess_mutate_ce (o, o->connection_list->array[i]); +#ifdef ENABLE_CRYPTO + if (o->tls_server) + { + /* Check that DH file is specified, or explicitly disabled */ + notnull (o->dh_file, "DH file (--dh)"); + if (streq (o->dh_file, "none")) + o->dh_file = NULL; + } +#endif + #if ENABLE_MANAGEMENT if (o->http_proxy_override) options_postprocess_http_proxy_override(o); |