diff options
author | beck <> | 2023-07-02 06:37:27 +0000 |
---|---|---|
committer | beck <> | 2023-07-02 06:37:27 +0000 |
commit | 5fa4afa0f3caaa43f2ba9d4ee6db352737839f89 (patch) | |
tree | 4bacb3a3d0ace64e696059ed29bf6c2df878b8b4 | |
parent | 0ded9dcf305231c596837cf0e9a372d5fc79b18b (diff) | |
download | openbsd-5fa4afa0f3caaa43f2ba9d4ee6db352737839f89.tar.gz openbsd-5fa4afa0f3caaa43f2ba9d4ee6db352737839f89.tar.bz2 openbsd-5fa4afa0f3caaa43f2ba9d4ee6db352737839f89.zip |
Remove the ability to do tls 1.0 and 1.1 from libtls.
With this change any requests from configurations to request
versions of tls before tls 1.2 will use tls 1.2. This prepares
us to deprecate tls 1.0 and tls 1.1 support from libssl.
ok tb@
-rw-r--r-- | src/lib/libtls/man/tls_config_set_protocols.3 | 12 | ||||
-rw-r--r-- | src/lib/libtls/tls.c | 10 | ||||
-rw-r--r-- | src/lib/libtls/tls.h | 14 | ||||
-rw-r--r-- | src/lib/libtls/tls_config.c | 6 | ||||
-rw-r--r-- | src/regress/lib/libtls/config/configtest.c | 23 | ||||
-rw-r--r-- | src/regress/lib/libtls/gotls/tls.go | 2 | ||||
-rw-r--r-- | src/regress/lib/libtls/gotls/tls_test.go | 8 |
7 files changed, 31 insertions, 44 deletions
diff --git a/src/lib/libtls/man/tls_config_set_protocols.3 b/src/lib/libtls/man/tls_config_set_protocols.3 index 7c62493e83..32b8cce757 100644 --- a/src/lib/libtls/man/tls_config_set_protocols.3 +++ b/src/lib/libtls/man/tls_config_set_protocols.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: tls_config_set_protocols.3,v 1.11 2021/01/02 19:58:44 schwarze Exp $ | 1 | .\" $OpenBSD: tls_config_set_protocols.3,v 1.12 2023/07/02 06:37:27 beck Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2014 Ted Unangst <tedu@openbsd.org> | 3 | .\" Copyright (c) 2014 Ted Unangst <tedu@openbsd.org> |
4 | .\" Copyright (c) 2015, 2016 Joel Sing <jsing@openbsd.org> | 4 | .\" Copyright (c) 2015, 2016 Joel Sing <jsing@openbsd.org> |
@@ -16,7 +16,7 @@ | |||
16 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | 16 | .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
17 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | 17 | .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
18 | .\" | 18 | .\" |
19 | .Dd $Mdocdate: January 2 2021 $ | 19 | .Dd $Mdocdate: July 2 2023 $ |
20 | .Dt TLS_CONFIG_SET_PROTOCOLS 3 | 20 | .Dt TLS_CONFIG_SET_PROTOCOLS 3 |
21 | .Os | 21 | .Os |
22 | .Sh NAME | 22 | .Sh NAME |
@@ -76,10 +76,6 @@ Possible values are the bitwise OR of: | |||
76 | .Pp | 76 | .Pp |
77 | .Bl -item -offset indent -compact | 77 | .Bl -item -offset indent -compact |
78 | .It | 78 | .It |
79 | .Dv TLS_PROTOCOL_TLSv1_0 | ||
80 | .It | ||
81 | .Dv TLS_PROTOCOL_TLSv1_1 | ||
82 | .It | ||
83 | .Dv TLS_PROTOCOL_TLSv1_2 | 79 | .Dv TLS_PROTOCOL_TLSv1_2 |
84 | .It | 80 | .It |
85 | .Dv TLS_PROTOCOL_TLSv1_3 | 81 | .Dv TLS_PROTOCOL_TLSv1_3 |
@@ -87,7 +83,7 @@ Possible values are the bitwise OR of: | |||
87 | .Pp | 83 | .Pp |
88 | Additionally, the values | 84 | Additionally, the values |
89 | .Dv TLS_PROTOCOL_TLSv1 | 85 | .Dv TLS_PROTOCOL_TLSv1 |
90 | (TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3), | 86 | (TLSv1.2, TLSv1.3), |
91 | .Dv TLS_PROTOCOLS_ALL | 87 | .Dv TLS_PROTOCOLS_ALL |
92 | (all supported protocols) and | 88 | (all supported protocols) and |
93 | .Dv TLS_PROTOCOLS_DEFAULT | 89 | .Dv TLS_PROTOCOLS_DEFAULT |
@@ -106,8 +102,6 @@ The protocol string is a comma or colon separated list of keywords. | |||
106 | Valid keywords are: | 102 | Valid keywords are: |
107 | .Pp | 103 | .Pp |
108 | .Bl -tag -width "tlsv1.3" -offset indent -compact | 104 | .Bl -tag -width "tlsv1.3" -offset indent -compact |
109 | .It Dv tlsv1.0 | ||
110 | .It Dv tlsv1.1 | ||
111 | .It Dv tlsv1.2 | 105 | .It Dv tlsv1.2 |
112 | .It Dv tlsv1.3 | 106 | .It Dv tlsv1.3 |
113 | .It Dv all | 107 | .It Dv all |
diff --git a/src/lib/libtls/tls.c b/src/lib/libtls/tls.c index 8444169bdc..fdb994d733 100644 --- a/src/lib/libtls/tls.c +++ b/src/lib/libtls/tls.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.c,v 1.97 2023/06/18 11:43:03 op Exp $ */ | 1 | /* $OpenBSD: tls.c,v 1.98 2023/07/02 06:37:27 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -520,16 +520,12 @@ tls_configure_ssl(struct tls *ctx, SSL_CTX *ssl_ctx) | |||
520 | 520 | ||
521 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2); | 521 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2); |
522 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv3); | 522 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv3); |
523 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1); | ||
524 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1_1); | ||
523 | 525 | ||
524 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1); | ||
525 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1_1); | ||
526 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1_2); | 526 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1_2); |
527 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1_3); | 527 | SSL_CTX_clear_options(ssl_ctx, SSL_OP_NO_TLSv1_3); |
528 | 528 | ||
529 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_0) == 0) | ||
530 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1); | ||
531 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_1) == 0) | ||
532 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1_1); | ||
533 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_2) == 0) | 529 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_2) == 0) |
534 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1_2); | 530 | SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_TLSv1_2); |
535 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_3) == 0) | 531 | if ((ctx->config->protocols & TLS_PROTOCOL_TLSv1_3) == 0) |
diff --git a/src/lib/libtls/tls.h b/src/lib/libtls/tls.h index b94a6fa6d0..34183745e5 100644 --- a/src/lib/libtls/tls.h +++ b/src/lib/libtls/tls.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: tls.h,v 1.62 2022/03/24 15:56:34 tb Exp $ */ | 1 | /* $OpenBSD: tls.h,v 1.63 2023/07/02 06:37:27 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -29,14 +29,18 @@ extern "C" { | |||
29 | 29 | ||
30 | #define TLS_API 20200120 | 30 | #define TLS_API 20200120 |
31 | 31 | ||
32 | #define TLS_PROTOCOL_TLSv1_0 (1 << 1) | 32 | /* |
33 | #define TLS_PROTOCOL_TLSv1_1 (1 << 2) | 33 | * Deprecated versions of TLS. Using these effectively selects |
34 | * the minimum supported version. | ||
35 | */ | ||
36 | #define TLS_PROTOCOL_TLSv1_0 (1 << 3) | ||
37 | #define TLS_PROTOCOL_TLSv1_1 (1 << 3) | ||
38 | /* Supported versions of TLS */ | ||
34 | #define TLS_PROTOCOL_TLSv1_2 (1 << 3) | 39 | #define TLS_PROTOCOL_TLSv1_2 (1 << 3) |
35 | #define TLS_PROTOCOL_TLSv1_3 (1 << 4) | 40 | #define TLS_PROTOCOL_TLSv1_3 (1 << 4) |
36 | 41 | ||
37 | #define TLS_PROTOCOL_TLSv1 \ | 42 | #define TLS_PROTOCOL_TLSv1 \ |
38 | (TLS_PROTOCOL_TLSv1_0|TLS_PROTOCOL_TLSv1_1|\ | 43 | (TLS_PROTOCOL_TLSv1_2|TLS_PROTOCOL_TLSv1_3) |
39 | TLS_PROTOCOL_TLSv1_2|TLS_PROTOCOL_TLSv1_3) | ||
40 | 44 | ||
41 | #define TLS_PROTOCOLS_ALL TLS_PROTOCOL_TLSv1 | 45 | #define TLS_PROTOCOLS_ALL TLS_PROTOCOL_TLSv1 |
42 | #define TLS_PROTOCOLS_DEFAULT (TLS_PROTOCOL_TLSv1_2|TLS_PROTOCOL_TLSv1_3) | 46 | #define TLS_PROTOCOLS_DEFAULT (TLS_PROTOCOL_TLSv1_2|TLS_PROTOCOL_TLSv1_3) |
diff --git a/src/lib/libtls/tls_config.c b/src/lib/libtls/tls_config.c index 3efd0ddd57..5eb5b69ac6 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.66 2023/05/14 07:26:25 op Exp $ */ | 1 | /* $OpenBSD: tls_config.c,v 1.67 2023/07/02 06:37:27 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -251,9 +251,9 @@ tls_config_parse_protocols(uint32_t *protocols, const char *protostr) | |||
251 | if (strcasecmp(p, "tlsv1") == 0) | 251 | if (strcasecmp(p, "tlsv1") == 0) |
252 | proto = TLS_PROTOCOL_TLSv1; | 252 | proto = TLS_PROTOCOL_TLSv1; |
253 | else if (strcasecmp(p, "tlsv1.0") == 0) | 253 | else if (strcasecmp(p, "tlsv1.0") == 0) |
254 | proto = TLS_PROTOCOL_TLSv1_0; | 254 | proto = TLS_PROTOCOL_TLSv1_2; |
255 | else if (strcasecmp(p, "tlsv1.1") == 0) | 255 | else if (strcasecmp(p, "tlsv1.1") == 0) |
256 | proto = TLS_PROTOCOL_TLSv1_1; | 256 | proto = TLS_PROTOCOL_TLSv1_2; |
257 | else if (strcasecmp(p, "tlsv1.2") == 0) | 257 | else if (strcasecmp(p, "tlsv1.2") == 0) |
258 | proto = TLS_PROTOCOL_TLSv1_2; | 258 | proto = TLS_PROTOCOL_TLSv1_2; |
259 | else if (strcasecmp(p, "tlsv1.3") == 0) | 259 | else if (strcasecmp(p, "tlsv1.3") == 0) |
diff --git a/src/regress/lib/libtls/config/configtest.c b/src/regress/lib/libtls/config/configtest.c index 47aa03e826..5af5b56ffd 100644 --- a/src/regress/lib/libtls/config/configtest.c +++ b/src/regress/lib/libtls/config/configtest.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: configtest.c,v 1.2 2020/01/20 08:40:16 jsing Exp $ */ | 1 | /* $OpenBSD: configtest.c,v 1.3 2023/07/02 06:37:27 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2017 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2017 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -71,30 +71,27 @@ struct parse_protocols_test parse_protocols_tests[] = { | |||
71 | { | 71 | { |
72 | .protostr = "tlsv1.0:tlsv1.1:tlsv1.2:tlsv1.3", | 72 | .protostr = "tlsv1.0:tlsv1.1:tlsv1.2:tlsv1.3", |
73 | .want_return = 0, | 73 | .want_return = 0, |
74 | .want_protocols = TLS_PROTOCOL_TLSv1_0 | TLS_PROTOCOL_TLSv1_1 | | 74 | .want_protocols = TLS_PROTOCOL_TLSv1_2 | TLS_PROTOCOL_TLSv1_3, |
75 | TLS_PROTOCOL_TLSv1_2 | TLS_PROTOCOL_TLSv1_3, | ||
76 | }, | 75 | }, |
77 | { | 76 | { |
78 | .protostr = "tlsv1.0,tlsv1.1,tlsv1.2,tlsv1.3", | 77 | .protostr = "tlsv1.0,tlsv1.1,tlsv1.2,tlsv1.3", |
79 | .want_return = 0, | 78 | .want_return = 0, |
80 | .want_protocols = TLS_PROTOCOL_TLSv1_0 | TLS_PROTOCOL_TLSv1_1 | | 79 | .want_protocols = TLS_PROTOCOL_TLSv1_2 | TLS_PROTOCOL_TLSv1_3, |
81 | TLS_PROTOCOL_TLSv1_2 | TLS_PROTOCOL_TLSv1_3, | ||
82 | }, | 80 | }, |
83 | { | 81 | { |
84 | .protostr = "tlsv1.1,tlsv1.2,tlsv1.0", | 82 | .protostr = "tlsv1.1,tlsv1.2,tlsv1.0", |
85 | .want_return = 0, | 83 | .want_return = 0, |
86 | .want_protocols = TLS_PROTOCOL_TLSv1_0 | TLS_PROTOCOL_TLSv1_1 | | 84 | .want_protocols = TLS_PROTOCOL_TLSv1_2, |
87 | TLS_PROTOCOL_TLSv1_2, | ||
88 | }, | 85 | }, |
89 | { | 86 | { |
90 | .protostr = "tlsv1.1,tlsv1.2,tlsv1.1", | 87 | .protostr = "tlsv1.1,tlsv1.2,tlsv1.1", |
91 | .want_return = 0, | 88 | .want_return = 0, |
92 | .want_protocols = TLS_PROTOCOL_TLSv1_1 | TLS_PROTOCOL_TLSv1_2, | 89 | .want_protocols = TLS_PROTOCOL_TLSv1_2, |
93 | }, | 90 | }, |
94 | { | 91 | { |
95 | .protostr = "tlsv1.1,tlsv1.2,!tlsv1.1", | 92 | .protostr = "tlsv1.1,tlsv1.2,!tlsv1.1", |
96 | .want_return = 0, | 93 | .want_return = 0, |
97 | .want_protocols = TLS_PROTOCOL_TLSv1_2, | 94 | .want_protocols = 0, |
98 | }, | 95 | }, |
99 | { | 96 | { |
100 | .protostr = "unknown", | 97 | .protostr = "unknown", |
@@ -114,19 +111,17 @@ struct parse_protocols_test parse_protocols_tests[] = { | |||
114 | { | 111 | { |
115 | .protostr = "all,!tlsv1.0", | 112 | .protostr = "all,!tlsv1.0", |
116 | .want_return = 0, | 113 | .want_return = 0, |
117 | .want_protocols = TLS_PROTOCOL_TLSv1_1 | TLS_PROTOCOL_TLSv1_2 | \ | 114 | .want_protocols = TLS_PROTOCOL_TLSv1_3, |
118 | TLS_PROTOCOL_TLSv1_3, | ||
119 | }, | 115 | }, |
120 | { | 116 | { |
121 | .protostr = "!tlsv1.0", | 117 | .protostr = "!tlsv1.0", |
122 | .want_return = 0, | 118 | .want_return = 0, |
123 | .want_protocols = TLS_PROTOCOL_TLSv1_1 | TLS_PROTOCOL_TLSv1_2 | \ | 119 | .want_protocols = TLS_PROTOCOL_TLSv1_3, |
124 | TLS_PROTOCOL_TLSv1_3, | ||
125 | }, | 120 | }, |
126 | { | 121 | { |
127 | .protostr = "!tlsv1.0,!tlsv1.1,!tlsv1.3", | 122 | .protostr = "!tlsv1.0,!tlsv1.1,!tlsv1.3", |
128 | .want_return = 0, | 123 | .want_return = 0, |
129 | .want_protocols = TLS_PROTOCOL_TLSv1_2, | 124 | .want_protocols = 0, |
130 | }, | 125 | }, |
131 | { | 126 | { |
132 | .protostr = "!tlsv1.0,!tlsv1.1,tlsv1.2,!tlsv1.3", | 127 | .protostr = "!tlsv1.0,!tlsv1.1,tlsv1.2,!tlsv1.3", |
diff --git a/src/regress/lib/libtls/gotls/tls.go b/src/regress/lib/libtls/gotls/tls.go index cf3e84c030..3029d58c35 100644 --- a/src/regress/lib/libtls/gotls/tls.go +++ b/src/regress/lib/libtls/gotls/tls.go | |||
@@ -45,8 +45,6 @@ const ( | |||
45 | ) | 45 | ) |
46 | 46 | ||
47 | var protocolNames = map[ProtocolVersion]string{ | 47 | var protocolNames = map[ProtocolVersion]string{ |
48 | ProtocolTLSv10: "TLSv1", | ||
49 | ProtocolTLSv11: "TLSv1.1", | ||
50 | ProtocolTLSv12: "TLSv1.2", | 48 | ProtocolTLSv12: "TLSv1.2", |
51 | ProtocolTLSv13: "TLSv1.3", | 49 | ProtocolTLSv13: "TLSv1.3", |
52 | ProtocolsAll: "all", | 50 | ProtocolsAll: "all", |
diff --git a/src/regress/lib/libtls/gotls/tls_test.go b/src/regress/lib/libtls/gotls/tls_test.go index f6c6cfcdd5..2b7ce2c19e 100644 --- a/src/regress/lib/libtls/gotls/tls_test.go +++ b/src/regress/lib/libtls/gotls/tls_test.go | |||
@@ -251,11 +251,11 @@ func TestTLSVersions(t *testing.T) { | |||
251 | {tls.VersionSSL30, tls.VersionTLS12, ProtocolTLSv12, false}, | 251 | {tls.VersionSSL30, tls.VersionTLS12, ProtocolTLSv12, false}, |
252 | {tls.VersionTLS10, tls.VersionTLS12, ProtocolTLSv12, false}, | 252 | {tls.VersionTLS10, tls.VersionTLS12, ProtocolTLSv12, false}, |
253 | {tls.VersionTLS11, tls.VersionTLS12, ProtocolTLSv12, false}, | 253 | {tls.VersionTLS11, tls.VersionTLS12, ProtocolTLSv12, false}, |
254 | {tls.VersionSSL30, tls.VersionTLS11, ProtocolTLSv11, false}, | 254 | {tls.VersionSSL30, tls.VersionTLS11, ProtocolTLSv11, true}, |
255 | {tls.VersionSSL30, tls.VersionTLS10, ProtocolTLSv10, false}, | 255 | {tls.VersionSSL30, tls.VersionTLS10, ProtocolTLSv10, true}, |
256 | {tls.VersionSSL30, tls.VersionSSL30, 0, true}, | 256 | {tls.VersionSSL30, tls.VersionSSL30, 0, true}, |
257 | {tls.VersionTLS10, tls.VersionTLS10, ProtocolTLSv10, false}, | 257 | {tls.VersionTLS10, tls.VersionTLS10, ProtocolTLSv10, true}, |
258 | {tls.VersionTLS11, tls.VersionTLS11, ProtocolTLSv11, false}, | 258 | {tls.VersionTLS11, tls.VersionTLS11, ProtocolTLSv11, true}, |
259 | {tls.VersionTLS12, tls.VersionTLS12, ProtocolTLSv12, false}, | 259 | {tls.VersionTLS12, tls.VersionTLS12, ProtocolTLSv12, false}, |
260 | } | 260 | } |
261 | for i, test := range tests { | 261 | for i, test := range tests { |