diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2020-06-29 17:15:51 +0300 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2020-06-29 17:15:51 +0300 |
commit | fa2f2e35082ba01a8aed026b34fc5246637f104e (patch) | |
tree | 326c6aef1d5e65a8a1758ab41bcd5a05b71ecb77 /src | |
parent | 1bbc37d35c67c0ef5271551f8e40fd899442d157 (diff) | |
download | nginx-fa2f2e35082ba01a8aed026b34fc5246637f104e.tar.gz nginx-fa2f2e35082ba01a8aed026b34fc5246637f104e.zip |
SSL: fixed unexpected certificate requests (ticket #2008).
Using SSL_CTX_set_verify(SSL_VERIFY_PEER) implies that OpenSSL will
send a certificate request during an SSL handshake, leading to unexpected
certificate requests from browsers as long as there are any client
certificates installed. Given that ngx_ssl_trusted_certificate()
is called unconditionally by the ngx_http_ssl_module, this affected
all HTTPS servers. Broken by 699f6e55bbb4 (not released yet).
Fix is to set verify callback in the ngx_ssl_trusted_certificate() function
without changing the verify mode.
Diffstat (limited to 'src')
-rw-r--r-- | src/event/ngx_event_openssl.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c index c1d5d6a43..f589b9812 100644 --- a/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c @@ -920,7 +920,8 @@ ngx_int_t ngx_ssl_trusted_certificate(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *cert, ngx_int_t depth) { - SSL_CTX_set_verify(ssl->ctx, SSL_VERIFY_PEER, ngx_ssl_verify_callback); + SSL_CTX_set_verify(ssl->ctx, SSL_CTX_get_verify_mode(ssl->ctx), + ngx_ssl_verify_callback); SSL_CTX_set_verify_depth(ssl->ctx, depth); |