Skip to content

Commit

Permalink
SSL: always renewing tickets with TLSv1.3 (ticket #1892).
Browse files Browse the repository at this point in the history
Chrome only uses TLS session tickets once with TLS 1.3, likely following
RFC 8446 Appendix C.4 recommendation.  With OpenSSL, this works fine with
built-in session tickets, since these are explicitly renewed in case of
TLS 1.3 on each session reuse, but results in only two connections being
reused after an initial handshake when using ssl_session_ticket_key.

Fix is to always renew TLS session tickets in case of TLS 1.3 when using
ssl_session_ticket_key, similarly to how it is done by OpenSSL internally.
  • Loading branch information
mdounin committed Jan 24, 2022
1 parent 7ba3063 commit 0a407d7
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/event/ngx_event_openssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -4451,7 +4451,21 @@ ngx_ssl_session_ticket_key_callback(ngx_ssl_conn_t *ssl_conn,
return -1;
}

return (i == 0) ? 1 : 2 /* renew */;
/* renew if TLSv1.3 */

#ifdef TLS1_3_VERSION
if (SSL_version(ssl_conn) == TLS1_3_VERSION) {
return 2;
}
#endif

/* renew if non-default key */

if (i != 0) {
return 2;
}

return 1;
}
}

Expand Down

0 comments on commit 0a407d7

Please sign in to comment.