summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2016-07-13 16:30:48 +0000
committerjsing <>2016-07-13 16:30:48 +0000
commit539943b6faad83a69d90f2bd0763dbcaee823604 (patch)
treece799d1782b76aa2c4699344af2f2beb73b7afa3 /src/lib
parentc0a93abd9155dec486cdacfd923c4e10e4a42ee9 (diff)
downloadopenbsd-539943b6faad83a69d90f2bd0763dbcaee823604.tar.gz
openbsd-539943b6faad83a69d90f2bd0763dbcaee823604.tar.bz2
openbsd-539943b6faad83a69d90f2bd0763dbcaee823604.zip
Split the existing TLS cipher suite groups into four:
"secure" (TLSv1.2+AEAD+PFS) "compat" (HIGH:!aNULL) "legacy" (HIGH:MEDIUM:!aNULL) "insecure" (ALL:!aNULL:!eNULL) This allows for flexibility and finer grained control, rather than having two extremes (an issue raised by Marko Kreen some time ago). ok beck@ tedu@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libtls/tls_config.c10
-rw-r--r--src/lib/libtls/tls_init.317
-rw-r--r--src/lib/libtls/tls_internal.h6
3 files changed, 22 insertions, 11 deletions
diff --git a/src/lib/libtls/tls_config.c b/src/lib/libtls/tls_config.c
index 6b47eeb8d1..43f06b0063 100644
--- a/src/lib/libtls/tls_config.c
+++ b/src/lib/libtls/tls_config.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_config.c,v 1.21 2016/07/07 14:09:03 jsing Exp $ */ 1/* $OpenBSD: tls_config.c,v 1.22 2016/07/13 16:30:48 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -289,9 +289,13 @@ tls_config_set_ciphers(struct tls_config *config, const char *ciphers)
289 strcasecmp(ciphers, "default") == 0 || 289 strcasecmp(ciphers, "default") == 0 ||
290 strcasecmp(ciphers, "secure") == 0) 290 strcasecmp(ciphers, "secure") == 0)
291 ciphers = TLS_CIPHERS_DEFAULT; 291 ciphers = TLS_CIPHERS_DEFAULT;
292 else if (strcasecmp(ciphers, "compat") == 0 || 292 else if (strcasecmp(ciphers, "compat") == 0)
293 strcasecmp(ciphers, "legacy") == 0)
294 ciphers = TLS_CIPHERS_COMPAT; 293 ciphers = TLS_CIPHERS_COMPAT;
294 else if (strcasecmp(ciphers, "legacy") == 0)
295 ciphers = TLS_CIPHERS_LEGACY;
296 else if (strcasecmp(ciphers, "all") == 0 ||
297 strcasecmp(ciphers, "insecure") == 0)
298 ciphers = TLS_CIPHERS_ALL;
295 299
296 if ((ssl_ctx = SSL_CTX_new(SSLv23_method())) == NULL) { 300 if ((ssl_ctx = SSL_CTX_new(SSLv23_method())) == NULL) {
297 tls_config_set_errorx(config, "out of memory"); 301 tls_config_set_errorx(config, "out of memory");
diff --git a/src/lib/libtls/tls_init.3 b/src/lib/libtls/tls_init.3
index cd1f00af23..b4c6a7cc3a 100644
--- a/src/lib/libtls/tls_init.3
+++ b/src/lib/libtls/tls_init.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: tls_init.3,v 1.61 2016/05/27 11:25:57 sthen Exp $ 1.\" $OpenBSD: tls_init.3,v 1.62 2016/07/13 16:30:48 jsing Exp $
2.\" 2.\"
3.\" Copyright (c) 2014 Ted Unangst <tedu@openbsd.org> 3.\" Copyright (c) 2014 Ted Unangst <tedu@openbsd.org>
4.\" 4.\"
@@ -14,7 +14,7 @@
14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16.\" 16.\"
17.Dd $Mdocdate: May 27 2016 $ 17.Dd $Mdocdate: July 13 2016 $
18.Dt TLS_INIT 3 18.Dt TLS_INIT 3
19.Os 19.Os
20.Sh NAME 20.Sh NAME
@@ -322,13 +322,18 @@ sets the list of ciphers that may be used.
322Lists of ciphers are specified by name, and the 322Lists of ciphers are specified by name, and the
323permitted names are: 323permitted names are:
324.Pp 324.Pp
325.Bl -tag -width "default" -offset indent -compact 325.Bl -tag -width "insecure" -offset indent -compact
326.It Dv "secure" 326.It Dv "secure" (or alias "default")
327.It Dv "default" (an alias for secure) 327.It Dv "compat"
328.It Dv "legacy" 328.It Dv "legacy"
329.It Dv "compat" (an alias for legacy) 329.It Dv "insecure" (or alias "all")
330.El 330.El
331.Pp 331.Pp
332Alternatively, libssl cipher strings can be specified.
333See the CIPHERS section of
334.Xr openssl 1
335for further information.
336.Pp
332.Em (Client and server) 337.Em (Client and server)
333.It 338.It
334.Fn tls_config_set_key_file 339.Fn tls_config_set_key_file
diff --git a/src/lib/libtls/tls_internal.h b/src/lib/libtls/tls_internal.h
index 886ee1151f..6c56e6fb84 100644
--- a/src/lib/libtls/tls_internal.h
+++ b/src/lib/libtls/tls_internal.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_internal.h,v 1.31 2016/07/07 14:09:03 jsing Exp $ */ 1/* $OpenBSD: tls_internal.h,v 1.32 2016/07/13 16:30:48 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org> 3 * Copyright (c) 2014 Jeremie Courreges-Anglas <jca@openbsd.org>
4 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 4 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
@@ -26,8 +26,10 @@
26 26
27#define _PATH_SSL_CA_FILE "/etc/ssl/cert.pem" 27#define _PATH_SSL_CA_FILE "/etc/ssl/cert.pem"
28 28
29#define TLS_CIPHERS_COMPAT "ALL:!aNULL:!eNULL"
30#define TLS_CIPHERS_DEFAULT "TLSv1.2+AEAD+ECDHE:TLSv1.2+AEAD+DHE" 29#define TLS_CIPHERS_DEFAULT "TLSv1.2+AEAD+ECDHE:TLSv1.2+AEAD+DHE"
30#define TLS_CIPHERS_COMPAT "HIGH:!aNULL"
31#define TLS_CIPHERS_LEGACY "HIGH:MEDIUM:!aNULL"
32#define TLS_CIPHERS_ALL "ALL:!aNULL:!eNULL"
31 33
32union tls_addr { 34union tls_addr {
33 struct in_addr ip4; 35 struct in_addr ip4;