You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Return 407 for proxy requests with missing auth instead of 404
Chrome needs a 407 Proxy-Authenticate challenge to trigger credential
sending. Non-proxy requests (no CONNECT, no absolute URI) still get
stealth nginx 404, so scanners can't distinguish the proxy from a
normal web server. Add Chrome auth challenge test.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ Stealth HTTPS forward proxy that auto-obtains TLS certs via ACME/Let's Encrypt a
27
27
28
28
### Key Design Decisions
29
29
30
-
-**Stealth over standards**: Auth failures return 404, not 407. The proxy is indistinguishable from a misconfigured nginx to scanners.
30
+
-**Stealth for non-proxy traffic**: Non-proxy requests (no absolute URI, no CONNECT) return nginx 404. Proxy requests with missing/wrong auth get 407 so real clients (Chrome) can authenticate.
31
31
-**hyper 1.x with upgrades**: `http1::Builder` must use `.with_upgrades()` for CONNECT tunneling to work.
32
32
-**Proxy detection**: `req.uri().authority().is_some()` (absolute URI) or `Method::CONNECT`.
33
33
-**ACME on port 443 only**: Uses TLS-ALPN-01 challenge type, no port 80 listener needed.
0 commit comments