This parameter requires the client certificate but does not require it to be signed by a trusted CA certificate.
# HG changeset patch # User Evgenia Titova <zhenyatito...@gmail.com> # Date 1639309072 -10800 # Sun Dec 12 14:37:52 2021 +0300 # Node ID f65a12913829b4032c390e16bafcefb7efdf27f4 # Parent a7a77549265ef46f1f0fdb3897f4beabf9e09c40 on_no_ca parameter added to ssl_verify_client directive. This parameter requires the client certificate but does not require it to be signed by a trusted CA certificate. diff -r a7a77549265e -r f65a12913829 src/http/modules/ngx_http_ssl_module.c --- a/src/http/modules/ngx_http_ssl_module.c Thu Nov 25 22:02:10 2021 +0300 +++ b/src/http/modules/ngx_http_ssl_module.c Sun Dec 12 14:37:52 2021 +0300 @@ -70,6 +70,7 @@ { ngx_string("on"), 1 }, { ngx_string("optional"), 2 }, { ngx_string("optional_no_ca"), 3 }, + { ngx_string("on_no_ca"), 4 }, { ngx_null_string, 0 } }; @@ -796,7 +797,7 @@ if (conf->verify) { - if (conf->client_certificate.len == 0 && conf->verify != 3) { + if (conf->client_certificate.len == 0 && conf->verify != 3 && conf->verify != 4) { ngx_log_error(NGX_LOG_EMERG, cf->log, 0, "no ssl_client_certificate for ssl_verify_client"); return NGX_CONF_ERROR; @@ -825,10 +826,11 @@ if (conf->ocsp) { - if (conf->verify == 3) { + if (conf->verify == 3 || conf->verify == 4) { ngx_log_error(NGX_LOG_EMERG, cf->log, 0, "\"ssl_ocsp\" is incompatible with " - "\"ssl_verify_client optional_no_ca\""); + "\"ssl_verify_client optional_no_ca\" or " + "\"ssl_verify_client on_no_ca\""); return NGX_CONF_ERROR; } diff -r a7a77549265e -r f65a12913829 src/http/ngx_http_request.c --- a/src/http/ngx_http_request.c Thu Nov 25 22:02:10 2021 +0300 +++ b/src/http/ngx_http_request.c Sun Dec 12 14:37:52 2021 +0300 @@ -2057,7 +2057,7 @@ rc = SSL_get_verify_result(c->ssl->connection); if (rc != X509_V_OK - && (sscf->verify != 3 || !ngx_ssl_verify_error_optional(rc))) + && (sscf->verify == 1 || sscf->verify == 2 || !ngx_ssl_verify_error_optional(rc))) { ngx_log_error(NGX_LOG_INFO, c->log, 0, "client SSL certificate verify error: (%l:%s)", @@ -2070,7 +2070,7 @@ return; } - if (sscf->verify == 1) { + if (sscf->verify == 1 || sscf->verify == 4) { cert = SSL_get_peer_certificate(c->ssl->connection); if (cert == NULL) { diff -r a7a77549265e -r f65a12913829 src/mail/ngx_mail_handler.c --- a/src/mail/ngx_mail_handler.c Thu Nov 25 22:02:10 2021 +0300 +++ b/src/mail/ngx_mail_handler.c Sun Dec 12 14:37:52 2021 +0300 @@ -401,7 +401,7 @@ rc = SSL_get_verify_result(c->ssl->connection); if (rc != X509_V_OK - && (sslcf->verify != 3 || !ngx_ssl_verify_error_optional(rc))) + && (sslcf->verify == 1 || sslcf->verify == 2 || !ngx_ssl_verify_error_optional(rc))) { ngx_log_error(NGX_LOG_INFO, c->log, 0, "client SSL certificate verify error: (%l:%s)", @@ -421,7 +421,7 @@ return NGX_ERROR; } - if (sslcf->verify == 1) { + if (sslcf->verify == 1 || sslcf->verify == 4) { cert = SSL_get_peer_certificate(c->ssl->connection); if (cert == NULL) { diff -r a7a77549265e -r f65a12913829 src/mail/ngx_mail_ssl_module.c --- a/src/mail/ngx_mail_ssl_module.c Thu Nov 25 22:02:10 2021 +0300 +++ b/src/mail/ngx_mail_ssl_module.c Sun Dec 12 14:37:52 2021 +0300 @@ -61,6 +61,7 @@ { ngx_string("on"), 1 }, { ngx_string("optional"), 2 }, { ngx_string("optional_no_ca"), 3 }, + { ngx_string("on_no_ca"), 4 }, { ngx_null_string, 0 } }; @@ -468,7 +469,7 @@ if (conf->verify) { - if (conf->client_certificate.len == 0 && conf->verify != 3) { + if (conf->client_certificate.len == 0 && conf->verify != 3 && conf->verify != 4) { ngx_log_error(NGX_LOG_EMERG, cf->log, 0, "no ssl_client_certificate for ssl_verify_client"); return NGX_CONF_ERROR; diff -r a7a77549265e -r f65a12913829 src/stream/ngx_stream_ssl_module.c --- a/src/stream/ngx_stream_ssl_module.c Thu Nov 25 22:02:10 2021 +0300 +++ b/src/stream/ngx_stream_ssl_module.c Sun Dec 12 14:37:52 2021 +0300 @@ -76,6 +76,7 @@ { ngx_string("on"), 1 }, { ngx_string("optional"), 2 }, { ngx_string("optional_no_ca"), 3 }, + { ngx_string("on_no_ca"), 4 }, { ngx_null_string, 0 } }; @@ -360,7 +361,7 @@ rc = SSL_get_verify_result(c->ssl->connection); if (rc != X509_V_OK - && (sslcf->verify != 3 || !ngx_ssl_verify_error_optional(rc))) + && (sslcf->verify == 1 || sslcf->verify == 2 || !ngx_ssl_verify_error_optional(rc))) { ngx_log_error(NGX_LOG_INFO, c->log, 0, "client SSL certificate verify error: (%l:%s)", @@ -371,7 +372,7 @@ return NGX_ERROR; } - if (sslcf->verify == 1) { + if (sslcf->verify == 1 || sslcf->verify == 4) { cert = SSL_get_peer_certificate(c->ssl->connection); if (cert == NULL) { @@ -831,7 +832,7 @@ if (conf->verify) { - if (conf->client_certificate.len == 0 && conf->verify != 3) { + if (conf->client_certificate.len == 0 && conf->verify != 3 && conf->verify != 4) { ngx_log_error(NGX_LOG_EMERG, cf->log, 0, "no ssl_client_certificate for ssl_verify_client"); return NGX_CONF_ERROR;
_______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel