Skip to content

mod_ssl: Fix "Require ssl-verify-client" denied on HTTP/2 secondary c… - #959

Open
arturobernalg wants to merge 1 commit into
apache:2.4.xfrom
arturobernalg:backport/httpd-70284-ssl-verify-client-h2
Open

arturobernalg wants to merge 1 commit into
apache:2.4.xfrom
arturobernalg:backport/httpd-70284-ssl-verify-client-h2

Conversation

@arturobernalg

Copy link
Copy Markdown
Member

ssl_authz_verify_client_check() read the SSLConnRec off r->connection directly. On an HTTP/2 secondary (stream) connection that object has no SSLConnRec of its own -- the handshake state lives on the master connection -- so the check always found no SSL and denied the request, even though SSL_CLIENT_VERIFY itself already read SUCCESS for the same request. Every other mod_ssl hook touching a request already falls back to r->connection->master in this situation (ssl_hook_Access(), modssl_request_is_tls()); this one didn't.

Reuse modssl_request_is_tls(), which already does that fallback, instead of duplicating the lookup.

This backports the trunk fix (56156a7, #913) to 2.4.x.

BZ: https://bz.apache.org/bugzilla/show_bug.cgi?id=70284


  • This PR does not report or address a security vulnerability
    (see SECURITY.md and
    https://www.apache.org/security/#reporting-a-vulnerability).
  • Code follows the httpd style guide.
  • New log messages (level debug or higher) use an empty APLOGNO() tag;
    numbers are assigned by a committer at merge time (see docs/log-message-tags/README).
  • If the change is user-visible, a changes-entries/*.txt file is included,
    following the template in README.CHANGES (not needed otherwise).
  • Test cases based on pyhttpd are included where appropriate, in the
    test/modules/xxx directory matching the modules/xxx module source,
    or test/modules/core for core server changes. On Unix, verify these
    pass locally with e.g. make check-pytest PYTEST_DIRS=test/modules/xxx.

…onnections.

ssl_authz_verify_client_check() read the SSLConnRec off r->connection
directly. On an HTTP/2 secondary (stream) connection that object has no
SSLConnRec of its own -- the handshake state lives on the master
connection -- so the check always found no SSL and denied the request,
even though SSL_CLIENT_VERIFY itself already read SUCCESS for the same
request. Every other mod_ssl hook touching a request already falls
back to r->connection->master in this situation (ssl_hook_Access(),
modssl_request_is_tls()); this one didn't.

Reuse modssl_request_is_tls(), which already does that fallback,
instead of duplicating the lookup.

This backports the trunk fix (56156a7, PR apache#913) to 2.4.x.

PR 70284
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant