我的 Web 服务器出了点问题。每当我使用 SSL 连接到 Apache 时,都会收到 400 Bad Request。我查看了 Apache 的错误日志,发现:
[ssl:error] [pid 30065] AH02032: Hostname 127.0.0.1 provided via SNI and hostname xxx.xxx.xxx.xxx provided via HTTP are different
造成这种情况的原因可能是我使用了 stunnel + sslh,具体如下:
stunnel:443 -> sslh -> stunnel:444 -> apache(ssl):4431
我使用这个是因为我的大学阻止了端口 443 上的所有非 SSL 流量,并在其他端口上使用 DPI,并且我同时需要 SSH 和 HTTPS。我想知道是否有办法阻止 Apache 要求两者相同。
答案1
这个问题类似于无法关闭 Apache 上的 SNI, 在哪里迈克尔·汉普顿提到无法禁用和埃克斯建议如果您可以强制使用 HTTP/1.0,那么您应该绕过 SNI 问题(我猜是客户端或服务器端)。
造成这种情况的原因可能是我使用了 stunnel + sslh,
stunnel:443 -> sslh -> stunnel:444 -> apache(ssl):4431
隧道(手册页) 可以发送 SNI 标头。因此,您可能可以在该级别修复您的问题,但这值得再问一个问题。