|
30 | 30 | #include "ngx_stream_lua_semaphore.h" |
31 | 31 | #include "ngx_stream_lua_ssl_client_helloby.h" |
32 | 32 | #include "ngx_stream_lua_ssl_certby.h" |
| 33 | +#include "ngx_stream_lua_proxy_ssl_verifyby.h" |
33 | 34 |
|
34 | 35 |
|
35 | 36 | #include "ngx_stream_lua_prereadby.h" |
@@ -417,6 +418,28 @@ static ngx_command_t ngx_stream_lua_cmds[] = { |
417 | 418 | 0, |
418 | 419 | (void *) ngx_stream_lua_ssl_cert_handler_file }, |
419 | 420 |
|
| 421 | + /* same context as proxy_pass directive */ |
| 422 | + { ngx_string("proxy_ssl_verify_by_lua_block"), |
| 423 | + NGX_STREAM_SRV_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS, |
| 424 | + ngx_stream_lua_proxy_ssl_verify_by_lua_block, |
| 425 | + NGX_STREAM_SRV_CONF_OFFSET, |
| 426 | + 0, |
| 427 | + (void *) ngx_stream_lua_proxy_ssl_verify_handler_inline }, |
| 428 | + |
| 429 | + { ngx_string("proxy_ssl_verify_by_lua_file"), |
| 430 | + NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, |
| 431 | + ngx_stream_lua_proxy_ssl_verify_by_lua, |
| 432 | + NGX_STREAM_SRV_CONF_OFFSET, |
| 433 | + 0, |
| 434 | + (void *) ngx_stream_lua_proxy_ssl_verify_handler_file }, |
| 435 | + |
| 436 | + { ngx_string("lua_upstream_skip_openssl_default_verify"), |
| 437 | + NGX_STREAM_SRV_CONF|NGX_CONF_FLAG, |
| 438 | + ngx_conf_set_flag_slot, |
| 439 | + NGX_STREAM_SRV_CONF_OFFSET, |
| 440 | + offsetof(ngx_stream_lua_srv_conf_t, |
| 441 | + ups.upstream_skip_openssl_default_verify), |
| 442 | + NULL }, |
420 | 443 |
|
421 | 444 | { ngx_string("lua_ssl_verify_depth"), |
422 | 445 | NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, |
@@ -813,6 +836,10 @@ ngx_stream_lua_create_srv_conf(ngx_conf_t *cf) |
813 | 836 | * lscf->srv.ssl_client_hello_src = { 0, NULL }; |
814 | 837 | * lscf->srv.ssl_client_hello_src_key = NULL; |
815 | 838 | * |
| 839 | + * lscf->ups.proxy_ssl_verify_handler = NULL; |
| 840 | + * lscf->ups.proxy_ssl_verify_src = { 0, NULL }; |
| 841 | + * lscf->ups.proxy_ssl_verify_src_key = NULL; |
| 842 | + * |
816 | 843 | * lscf->srv.ssl_cert_handler = NULL; |
817 | 844 | * lscf->srv.ssl_cert_src = { 0, NULL }; |
818 | 845 | * lscf->srv.ssl_cert_src_key = NULL; |
@@ -847,6 +874,7 @@ ngx_stream_lua_create_srv_conf(ngx_conf_t *cf) |
847 | 874 | conf->ssl_verify_depth = NGX_CONF_UNSET_UINT; |
848 | 875 | conf->ssl_certificates = NGX_CONF_UNSET_PTR; |
849 | 876 | conf->ssl_certificate_keys = NGX_CONF_UNSET_PTR; |
| 877 | + conf->ups.upstream_skip_openssl_default_verify = NGX_CONF_UNSET; |
850 | 878 | #endif |
851 | 879 |
|
852 | 880 | return conf; |
@@ -980,6 +1008,21 @@ ngx_stream_lua_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) |
980 | 1008 | NULL); |
981 | 1009 | #endif |
982 | 1010 |
|
| 1011 | + if (conf->ups.proxy_ssl_verify_src.len == 0) { |
| 1012 | + conf->ups.proxy_ssl_verify_src = prev->ups.proxy_ssl_verify_src; |
| 1013 | + conf->ups.proxy_ssl_verify_handler = prev->ups.proxy_ssl_verify_handler; |
| 1014 | + conf->ups.proxy_ssl_verify_src_key = prev->ups.proxy_ssl_verify_src_key; |
| 1015 | + } |
| 1016 | + |
| 1017 | + if (conf->ups.proxy_ssl_verify_src.len) { |
| 1018 | + if (ngx_stream_lua_proxy_ssl_verify_set_callback(cf) != NGX_OK) { |
| 1019 | + return NGX_CONF_ERROR; |
| 1020 | + } |
| 1021 | + } |
| 1022 | + |
| 1023 | + ngx_conf_merge_value(conf->ups.upstream_skip_openssl_default_verify, |
| 1024 | + prev->ups.upstream_skip_openssl_default_verify, 0); |
| 1025 | + |
983 | 1026 | if (ngx_stream_lua_set_ssl(cf, conf) != NGX_OK) { |
984 | 1027 | return NGX_CONF_ERROR; |
985 | 1028 | } |
|
0 commit comments