Reset TLS 1.3 ciphers in SSL_CTX_set_ssl_version()
authorBenjamin Kaduk <bkaduk@akamai.com>
Wed, 19 Sep 2018 14:02:04 +0000 (09:02 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Wed, 19 Sep 2018 21:44:30 +0000 (16:44 -0500)
Historically SSL_CTX_set_ssl_version() has reset the cipher list
to the default.  Splitting TLS 1.3 ciphers to be tracked separately
caused a behavior change, in that TLS 1.3 cipher configuration was
preserved across calls to SSL_CTX_set_ssl_version().  To restore commensurate
behavior with the historical behavior, set the ciphersuites to the default as
well as setting the cipher list to the default.

Closes: #7226

Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7270)

ssl/ssl_lib.c

index d75158e30c4f1e934366ff79826fe9e3bcdaf092..ec5b1554f7cc47c20fa6d8344760b395ec5b8912 100644 (file)
@@ -654,6 +654,10 @@ int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth)
 
     ctx->method = meth;
 
+    if (!SSL_CTX_set_ciphersuites(ctx, TLS_DEFAULT_CIPHERSUITES)) {
+        SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION, SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
+        return 0;
+    }
     sk = ssl_create_cipher_list(ctx->method,
                                 ctx->tls13_ciphersuites,
                                 &(ctx->cipher_list),