kong-build-tools/openresty-patches/t/stream/001-balancer-ssl-ctx.t (6 lines of code) (raw):

# vim:set ft= ts=4 sw=4 et fdm=marker: use Test::Nginx::Socket::Lua::Stream; repeat_each(2); plan tests => repeat_each() * (blocks() * 5); #worker_connections(1024); #no_diff(); no_long_string(); run_tests(); __DATA__ === TEST 1: not setting SSL_CTX for upstream client connection, proxy_ssl_* are respected --- stream_config upstream backend { server 0.0.0.1:1234; balancer_by_lua_block { local balancer = require("ngx.balancer") assert(balancer.set_current_peer("127.0.0.1", 12345)) } } server { listen 12345 ssl; ssl_certificate ../../certs/test.crt; ssl_certificate_key ../../certs/test.key; return "ok"; } --- stream_server_config # default: proxy_ssl_verify off; proxy_ssl_trusted_certificate ../../certs/trusted.crt; proxy_pass backend; proxy_ssl on; --- stream_response: ok --- no_error_log [warn] [error] [crit] === TEST 2: set SSL_CTX for upstream client connection --- stream_config upstream backend { server 0.0.0.1:1234; balancer_by_lua_block { local http_tls = require("http.tls") local openssl_ctx = require("openssl.ssl.context") local balancer = require("ngx.balancer") local ffi = require("ffi") local cast = ffi.cast local voidpp = ffi.typeof("void**") local client_ssl_ctx = http_tls.new_client_context() -- this overrides any proxy_ssl_* configs client_ssl_ctx:setVerify(openssl_ctx.VERIFY_PEER) assert(balancer.set_ssl_ctx(cast(voidpp, client_ssl_ctx)[0])) assert(balancer.set_current_peer("127.0.0.1", 12345)) } } server { listen 12345 ssl; ssl_certificate ../../certs/test.crt; ssl_certificate_key ../../certs/test.key; return "ok"; } --- stream_server_config proxy_ssl_verify on; proxy_ssl_trusted_certificate ../../certs/trusted.crt; proxy_pass backend; proxy_ssl on; --- stream_response: --- error_log SSL_do_handshake() failed (SSL: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed) --- no_error_log [warn] [error] === TEST 3: set SSL_CTX for non-https upstream --- SKIP --- stream_config upstream backend { server 0.0.0.1; balancer_by_lua_block { local http_tls = require("http.tls") local openssl_ctx = require("openssl.ssl.context") local balancer = require("ngx.balancer") local ffi = require("ffi") local cast = ffi.cast local voidpp = ffi.typeof("void**") local client_ssl_ctx = http_tls.new_client_context() -- this overrides any proxy_ssl_* configs client_ssl_ctx:setVerify(openssl_ctx.VERIFY_PEER) assert(balancer.set_ssl_ctx(cast(voidpp, client_ssl_ctx)[0])) assert(balancer.set_current_peer("127.0.0.1", 12345)) } } server { listen 12345; server_tokens off; return 200 "ok"; } } --- stream_server_config proxy_pass http://backend; } --- stream_response: ok --- no_error_log [warn] [error] [crit]