Mercurial > hg > nginx
comparison src/event/ngx_event_openssl.c @ 7332:7ad0f4ace359
SSL: enabled TLSv1.3 with BoringSSL.
BoringSSL currently requires SSL_CTX_set_max_proto_version(TLS1_3_VERSION)
to be able to enable TLS 1.3. This is because by default max protocol
version is set to TLS 1.2, and the SSL_OP_NO_* options are merely used
as a blacklist within the version range specified using the
SSL_CTX_set_min_proto_version() and SSL_CTX_set_max_proto_version()
functions.
With this change, we now call SSL_CTX_set_max_proto_version() with an
explicit maximum version set. This enables TLS 1.3 with BoringSSL.
As a side effect, this change also limits maximum protocol version to
the newest protocol we know about, TLS 1.3. This seems to be a good
change, as enabling unknown protocols might have unexpected results.
Additionally, we now explicitly call SSL_CTX_set_min_proto_version()
with 0. This is expected to help with Debian system-wide default
of MinProtocol set to TLSv1.2, see
http://mailman.nginx.org/pipermail/nginx-ru/2017-October/060411.html.
Note that there is no SSL_CTX_set_min_proto_version macro in BoringSSL,
so we call SSL_CTX_set_min_proto_version() and SSL_CTX_set_max_proto_version()
as long as the TLS1_3_VERSION macro is defined.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Tue, 07 Aug 2018 02:15:28 +0300 |
parents | 696df3ac27ac |
children | ba971deb4b44 |
comparison
equal
deleted
inserted
replaced
7331:bb40db0e380d | 7332:7ad0f4ace359 |
---|---|
327 #ifdef SSL_OP_NO_TLSv1_3 | 327 #ifdef SSL_OP_NO_TLSv1_3 |
328 SSL_CTX_clear_options(ssl->ctx, SSL_OP_NO_TLSv1_3); | 328 SSL_CTX_clear_options(ssl->ctx, SSL_OP_NO_TLSv1_3); |
329 if (!(protocols & NGX_SSL_TLSv1_3)) { | 329 if (!(protocols & NGX_SSL_TLSv1_3)) { |
330 SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_TLSv1_3); | 330 SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_TLSv1_3); |
331 } | 331 } |
332 #endif | |
333 | |
334 #ifdef TLS1_3_VERSION | |
335 SSL_CTX_set_min_proto_version(ssl->ctx, 0); | |
336 SSL_CTX_set_max_proto_version(ssl->ctx, TLS1_3_VERSION); | |
332 #endif | 337 #endif |
333 | 338 |
334 #ifdef SSL_OP_NO_COMPRESSION | 339 #ifdef SSL_OP_NO_COMPRESSION |
335 SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION); | 340 SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION); |
336 #endif | 341 #endif |