mirror of
https://github.com/nginx/nginx.git
synced 2026-10-23 12:32:56 +00:00
QUIC: avoid processing 1-RTT with incomplete handshake in OpenSSL.
OpenSSL is known to provide read keys for an encryption level before the level is active in TLS, following the old BoringSSL API. In BoringSSL, it was then fixed to defer releasing read keys until QUIC may use them.
This commit is contained in:
parent
6157d0b5c1
commit
2b5659f350
1 changed files with 14 additions and 0 deletions
|
|
@ -918,6 +918,20 @@ ngx_quic_process_payload(ngx_connection_t *c, ngx_quic_header_t *pkt)
|
|||
return NGX_DECLINED;
|
||||
}
|
||||
|
||||
#if !defined (OPENSSL_IS_BORINGSSL)
|
||||
/* OpenSSL provides read keys for an application level before it's ready */
|
||||
|
||||
if (pkt->level == ssl_encryption_application
|
||||
&& SSL_quic_read_level(c->ssl->connection)
|
||||
< ssl_encryption_application)
|
||||
{
|
||||
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
||||
"quic no %s keys ready, ignoring packet",
|
||||
ngx_quic_level_name(pkt->level));
|
||||
return NGX_DECLINED;
|
||||
}
|
||||
#endif
|
||||
|
||||
pkt->keys = qc->keys;
|
||||
pkt->key_phase = qc->key_phase;
|
||||
pkt->plaintext = buf;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue