Hi, Yann - It took me a while, but I've managed to reproduce this issue with two smallish configs:
Backend server (host01): ================================================================== <Files "file.xml"> </Files> <LocationMatch "^/bob/(bob)"> SSLVerifyClient require RewriteEngine on RewriteRule /bob/bob /file.xml </LocationMatch> <Location /> Require all granted </Location> SSLEngine on Listen 443 SSLPassPhraseDialog builtin SSLOptions +ExportCertData +StdEnvVars +LegacyDNStringFormat ==================================================================== Reverse proxy server (host02) =================================================================== SSLProxyEngine on SSLProxyMachineCertificateFile /path/to/cert.crt_and_key ProxyPreserveHost off ExtendedStatus on Listen 443 <VirtualHost _default_:443> SSLEngine on SSLOptions +ExportCertData +StdEnvVars +LegacyDNStringFormat SSLProtocol all +TLSv1 +SSLv3 +TLSv1.1 +TLSv1.2 SSLCertificateFile /path/to/server/cert/cert.pem SSLCertificateKeyFile /path/to/server/key.nopass.pem SSLCACertificateFile /path/to/ca.pem SSLVerifyDepth 4 </VirtualHost> <Location /host01> ProxyPass https://host01 ProxyPassReverse https://host01 RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s" RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s" RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s" SSLVerifyClient require </Location> ======================================================== The proxy server SEGV's with the following stack on every third or fourth request for https://host02/host01/bob/bob. It appears to be having trouble with the client cert. #0 0x00007f29c8400132 in ssl_callback_SSLVerify () from /var/www/modules/mod_ssl.so #1 0x0000003c90521730 in X509_verify_cert () from /usr/lib64/libcrypto.so.10 #2 0x0000003c93c46d88 in ssl_verify_cert_chain () from /usr/lib64/libssl.so.10 #3 0x0000003c93c2569c in ssl3_get_server_certificate () from /usr/lib64/libssl.so.10 #4 0x0000003c93c27d62 in ssl3_connect () from /usr/lib64/libssl.so.10 #5 0x0000003c93c2cbe3 in ssl3_read_bytes () from /usr/lib64/libssl.so.10 #6 0x0000003c93c28260 in ?? () from /usr/lib64/libssl.so.10 #7 0x00007f29c83fc99c in ssl_io_input_read () from /var/www/modules/mod_ssl.so #8 0x00007f29c83ff6bd in ssl_io_filter_input () from /var/www/modules/mod_ssl.so #9 0x0000000000438b2e in ap_rgetline_core () #10 0x00007f29c86238c8 in ap_proxygetline () at mod_proxy_http.c:1161 #11 0x00007f29c8623d2b in ap_proxy_http_process_response.isra.2 () at mod_proxy_http.c:1279 #12 0x00007f29c8626802 in proxy_http_handler () at mod_proxy_http.c:2011 #13 0x00007f29c8a3a63c in proxy_run_scheme_handler () from /var/www/modules/mod_proxy.so #14 0x00007f29c8a3b7d6 in proxy_handler () from /var/www/modules/mod_proxy.so #15 0x0000000000450820 in ap_run_handler () #16 0x0000000000450db6 in ap_invoke_handler () #17 0x0000000000465fa3 in ap_process_async_request () #18 0x0000000000462561 in ap_process_http_connection () #19 0x0000000000459d50 in ap_run_process_connection () #20 0x000000000046f8c5 in process_socket () at event.c:1050 #21 0x000000000047018a in worker_thread () at event.c:2083 #22 0x0000003c84007aa1 in start_thread () from /lib64/libpthread.so.0 #23 0x0000003c83ce8c4d in clone () from /lib64/libc.so.6 If I remove +ExportCertData from SSLOptions it works. But I need the cert data. Unfortunately, I don't have a debug session anymore that I can give you the values of those variables, but I don't believe that any of them were null pointers, just an out-of-range memory read on mctx-> crl_check_mask. I tried to look at the code diff between 2.4.29 and 2.4.38 for ssl_engine_kernel.c, but so much has changed that I couldn't make much sense of it. Please let me know if there is anything else that I can do to help solve this issue. Thanks! Marty -----Original Message----- From: Yann Ylavic [mailto:ylavic....@gmail.com] Sent: Friday, February 01, 2019 1:44 AM To: users@httpd.apache.org Subject: Re: [users@httpd] Crash in mod_ssl after 2.4.29 Hello Marty, On Thu, Jan 31, 2019 at 7:13 PM Schettler, Marty L. <martin.l.schett...@leidos.com.invalid> wrote: > > I have a simple ssl reverse proxy set up that has been working for years up > through 2.4.29. When upgrading to 2.4.38, it now crashes periodically. It is > repeatable, but inconsistent. Can you please share the relevant configuration? > > Gdb indicates that mctx (declared on the previous line) is incorrectly > constructed, and so trying to access the field crl_check_mask results in > trying to access unavailable memory. Do you have a NULL pointer somewhere (mctx, sslconn->dc or sslconn->dc->proxy)? Otherwise what's the content of each (i.e. print *mctx, *sslconn->dc and *sslconn->dc->proxy)? Feel free to send me your configuration and gdb output privately if you wish. Regards, Yann.