On Thu, Jan 25, 2024 at 11:38:57PM +0300, Maxim Dounin wrote: > Hello! > > On Thu, Jan 25, 2024 at 06:59:36PM +0000, Mayerhofer, Austin via nginx-devel > wrote: > > > Hi all, > > > > I have not made any changes to NGINX. Vanilla NGINX (./configure with no > > flags) passes all tests that run, but when compiling with SSL, not all SSL > > tests are passing. Is this expected, or do I need to configure nginx > > further aside from adding the --with-http_ssl_module flag? Do each of the > > failing tests below require separate fixes, or is there a one-size-fits-all > > solution for all of them? > > > > OS: MacOS 12.6.3 > > Chip: Apple M1 Max > > NGINX: 1.24.0 built from source code with ./configure --with-debug > > --with-http_ssl_module > > Nginx-tests: > > https://github.com/nginx/nginx-tests/tree/4c2ad8093952706f327d04887c5546bad91b75a6 > > OpenSSL: 3.2.0 (/opt/homebrew/bin/openssl) > > Perl: 5.30.3 (/usr/bin/perl) > > > > When I run > > > > ``` > > TEST_NGINX_BINARY=/usr/local/nginx/sbin/nginx prove -v ssl.t > > ``` > > > > I see > > > > ``` > > not ok 2 - session reused > > > > # Failed test 'session reused' > > # at ssl.t line 187. > > # 'HTTP/1.1 200 OK > > # Server: nginx/1.24.0 > > # Date: Thu, 25 Jan 2024 18:50:10 GMT > > # Content-Type: text/plain > > # Content-Length: 6 > > # Connection: close > > # > > # body .' > > # doesn't match '(?^m:^body r$)' > > ``` > > [...] > > It looks like SSL session reuse is broken in Perl you are > using. This might be the case if, for example, Net::SSLeay in > your installation was compiled with system LibreSSL as an SSL > library - at least on the server side LibreSSL simply does not > support session reuse with TLSv1.3. > > Test suite checks if nginx was compiled with LibreSSL and marks > appropriate tests as TODO, but if the Perl module is broken > instead, the test will fail. >
Well, technically, we could test this and skip appropriately: diff --git a/ssl_session_reuse.t b/ssl_session_reuse.t --- a/ssl_session_reuse.t +++ b/ssl_session_reuse.t @@ -166,7 +166,9 @@ local $TODO = 'no TLSv1.3 sessions, old local $TODO = 'no TLSv1.3 sessions, old IO::Socket::SSL' if $IO::Socket::SSL::VERSION < 2.061 && test_tls13(); local $TODO = 'no TLSv1.3 sessions in LibreSSL' - if $t->has_module('LibreSSL') && test_tls13(); + if ($t->has_module('LibreSSL') + || Net::SSLeay::constant("LIBRESSL_VERSION_NUMBER")) + && test_tls13(); is(test_reuse(8443), 1, 'tickets reused'); is(test_reuse(8444), 1, 'tickets and cache reused'); But I see little to no purpose: if the testing tool is broken in various unexpected ways (another example is X509_V_ERR_INVALID_PURPOSE in peer certificate verification as reported in the adjacent thread), I think we barely can handle this in general. _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel