Merge pull request #4643 from mhils/issue-4642

Fix HTTPS Reverse Proxy TLS Layer Logic
This commit is contained in:
Maximilian Hils 2021-06-17 20:12:06 +02:00 committed by GitHub
commit 863c792f41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 6 deletions

View File

@ -115,9 +115,13 @@ class NextLayer:
# 2. Check for TLS
if client_tls:
# client tls usually requires a server tls layer as parent layer, except:
# - reverse proxy mode manages this itself.
# - a secure web proxy doesn't have a server part.
if s(modes.ReverseProxy) or s(modes.HttpProxy):
# - reverse proxy mode manages this itself.
if (
s(modes.HttpProxy) or
s(modes.ReverseProxy) or
s(modes.ReverseProxy, layers.ServerTLSLayer)
):
return layers.ClientTLSLayer(context)
else:
# We already assign the next layer here os that ServerTLSLayer
@ -127,11 +131,11 @@ class NextLayer:
return ret
# 3. Setup the HTTP layer for a regular HTTP proxy or an upstream proxy.
if any([
s(modes.HttpProxy),
if (
s(modes.HttpProxy) or
# or a "Secure Web Proxy", see https://www.chromium.org/developers/design-documents/secure-web-proxy
s(modes.HttpProxy, layers.ClientTLSLayer),
]):
s(modes.HttpProxy, layers.ClientTLSLayer)
):
if ctx.options.mode == "regular":
return layers.HttpLayer(context, HTTPMode.regular)
else: