Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multi ssl bug #1818

Merged
merged 19 commits into from
Jul 10, 2020
98 changes: 86 additions & 12 deletions t/router/radixtree-sni.t
Original file line number Diff line number Diff line change
Expand Up @@ -448,15 +448,15 @@ location /t {
local ssl_key = t.read_file("conf/cert/test2.key")
local data = {cert = ssl_cert, key = ssl_key, sni = "*.test2.com"}

local code, body = t.test('/apisix/admin/ssl/1',
local code, body = t.test('/apisix/admin/ssl/2',
nic-chen marked this conversation as resolved.
Show resolved Hide resolved
ngx.HTTP_PUT,
core.json.encode(data),
[[{
"node": {
"value": {
"sni": "*.test2.com"
},
"key": "/apisix/ssl/1"
"key": "/apisix/ssl/2"
},
"action": "set"
}]]
Expand Down Expand Up @@ -520,8 +520,82 @@ lua ssl server name: "www.test2.com"
[alert]


=== TEST 11: client request: test.com again
nic-chen marked this conversation as resolved.
Show resolved Hide resolved
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

location /t {
content_by_lua_block {
-- etcd sync
ngx.sleep(0.2)

do
local sock = ngx.socket.tcp()

sock:settimeout(2000)

local ok, err = sock:connect("unix:$TEST_NGINX_HTML_DIR/nginx.sock")
if not ok then
ngx.say("failed to connect: ", err)
return
end

ngx.say("connected: ", ok)

local sess, err = sock:sslhandshake(nil, "test.com", false)
if not sess then
ngx.say("failed to do SSL handshake: ", err)
return
end

ngx.say("ssl handshake: ", type(sess))

local req = "GET /hello HTTP/1.0\r\nHost: test.com\r\nConnection: close\r\n\r\n"
local bytes, err = sock:send(req)
if not bytes then
ngx.say("failed to send http request: ", err)
return
end

ngx.say("sent http request: ", bytes, " bytes.")

while true do
local line, err = sock:receive()
if not line then
-- ngx.say("failed to receive response status line: ", err)
break
end

ngx.say("received: ", line)
end

local ok, err = sock:close()
ngx.say("close: ", ok, " ", err)
end -- do
-- collectgarbage()
}
}
--- request
GET /t
--- response_body eval
qr{connected: 1
ssl handshake: userdata
sent http request: 58 bytes.
received: HTTP/1.1 200 OK
received: Content-Type: text/plain
received: Connection: close
received: Server: \w+
received: \nreceived: hello world
close: 1 nil}
--- error_log
lua ssl server name: "test.com"
--- no_error_log
[error]
[alert]



=== TEST 11: client request: aa.bb.test2.com
=== TEST 12: client request: aa.bb.test2.com
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down Expand Up @@ -568,7 +642,7 @@ not found any valid sni configuration, matched sni: *.test2.com current sni: aa.



=== TEST 12: disable ssl(sni: *.test2.com)
=== TEST 13: disable ssl(sni: *.test2.com)
--- config
location /t {
content_by_lua_block {
Expand Down Expand Up @@ -604,7 +678,7 @@ passed



=== TEST 13: client request: www.test2.com -- failed by disable
=== TEST 14: client request: www.test2.com -- failed by disable
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down Expand Up @@ -650,7 +724,7 @@ lua ssl server name: "www.test2.com"



=== TEST 14: enable ssl(sni: *.test2.com)
=== TEST 15: enable ssl(sni: *.test2.com)
--- config
location /t {
content_by_lua_block {
Expand Down Expand Up @@ -686,7 +760,7 @@ passed



=== TEST 15: client request: www.test2.com again
=== TEST 16: client request: www.test2.com again
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down Expand Up @@ -732,7 +806,7 @@ lua ssl server name: "www.test2.com"



=== TEST 16: set ssl(snis: {test2.com, *.test2.com})
=== TEST 17: set ssl(snis: {test2.com, *.test2.com})
--- config
location /t {
content_by_lua_block {
Expand Down Expand Up @@ -770,7 +844,7 @@ passed



=== TEST 17: client request: test2.com
=== TEST 18: client request: test2.com
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down Expand Up @@ -816,7 +890,7 @@ lua ssl server name: "test2.com"



=== TEST 18: client request: aa.bb.test2.com -- snis un-include
=== TEST 19: client request: aa.bb.test2.com -- snis un-include
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down Expand Up @@ -863,7 +937,7 @@ not found any valid sni configuration, matched sni: ["moc.2tset","moc.2tset.*"]



=== TEST 19: set ssl(encrypt ssl key with another iv)
=== TEST 20: set ssl(encrypt ssl key with another iv)
--- config
location /t {
content_by_lua_block {
Expand Down Expand Up @@ -901,7 +975,7 @@ passed



=== TEST 20: client request: test2.com
=== TEST 21: client request: test2.com
--- config
listen unix:$TEST_NGINX_HTML_DIR/nginx.sock ssl;

Expand Down