diff --git a/src/ngx_stream_lua_module.c b/src/ngx_stream_lua_module.c index 772e8c55..830a2e89 100644 --- a/src/ngx_stream_lua_module.c +++ b/src/ngx_stream_lua_module.c @@ -39,7 +39,12 @@ #include "ngx_stream_lua_prereadby.h" -#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER > 0x101010afL +/* + * BoringSSL always reports OPENSSL_VERSION_NUMBER as 1.1.1, but does provide + * SSL_CTX_set_keylog_callback() + */ +#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER > 0x101010afL \ + || defined(OPENSSL_IS_BORINGSSL) #define HAVE_SSL_KEY_LOG 1 #endif diff --git a/t/129-ssl-socket.t b/t/129-ssl-socket.t index 2b84087f..ad43b0fa 100644 --- a/t/129-ssl-socket.t +++ b/t/129-ssl-socket.t @@ -3115,8 +3115,21 @@ handshake rejected while SSL handshaking end local key_log = f:read("*a") - ngx.say(key_log) f:close() + + -- the log is appended to on each request, so keep the secrets + -- of the last handshake only, identified by its client random; + -- SSL libraries log them in different orders + local random = key_log:match("(%x+) %x+\n$") + local lines = {} + for line in key_log:gmatch("[^\n]+") do + if line:find(" " .. random .. " ", 1, true) then + lines[#lines + 1] = line + end + end + + table.sort(lines) + ngx.say(table.concat(lines, "\n")) end -- do collectgarbage() } @@ -3127,11 +3140,11 @@ ssl handshake: userdata sent stream request: 53 bytes. received: HTTP/1.1 200 OK close: 1 nil -SERVER_HANDSHAKE_TRAFFIC_SECRET [0-9a-z\s]+ -EXPORTER_SECRET [0-9a-z\s]+ -SERVER_TRAFFIC_SECRET_0 [0-9a-z\s]+ CLIENT_HANDSHAKE_TRAFFIC_SECRET [0-9a-z\s]+ CLIENT_TRAFFIC_SECRET_0 [0-9a-z\s]+ +EXPORTER_SECRET [0-9a-z\s]+ +SERVER_HANDSHAKE_TRAFFIC_SECRET [0-9a-z\s]+ +SERVER_TRAFFIC_SECRET_0 [0-9a-z\s]+ --- log_level: debug --- grep_error_log eval: qr/lua ssl (?:set|save|free) session: [0-9A-F]+/