我的 Apache Web 服务器日志出现可怕的错误:
[ssl:error] AH02032: Hostname www.example.com provided via SNI and
hostname example.com provided via HTTP are different
我需要手动重现日志中的错误。这就是我所要求的。
我该怎么做?
更具体地说,我需要查看我的 Web 服务器升级是否仍记录这些事件,如果是,则采取措施将它们从我的日志文件中过滤掉。
我知道的是:我需要在 TLS 握手中www.example.com
向我的 Web 服务器发送一个主机名,例如(SNI 应该由 Web 服务器自动处理)。然后example.com
在 HTTP 标头中发送一个不同的主机名,例如。
我熟悉 telnet / openssl 等,但不知道从哪里开始弄清楚这些命令。
第一次尝试这样做:
我已经接近了,但由于某种原因,错误不同,并且只在第一次出现:
$ openssl s_client -crlf -connect www.example.com:443
> GET / HTTP/1.1
> Host: example.com
> [ENTER]
[Sat Mar 05 17:31:35.958118 2022] [ssl:error] [pid 512:tid 139776568080128]
[client 10.0.0.100:37982] AH02032: Hostname www.example.com provided via SNI
and hostname example provided via HTTP have no compatible SSL setup
请注意,第二个主机名是example
,尽管我输入的是example.com
第二次尝试这样做:
$ openssl s_client -crlf -connect www.example.com:443
> GET / HTTP/1.1
> Host: example.com
> [ENTER]
日志文件中没有任何报告,无论是在旧服务器还是新服务器上。我发送的 SNI 主机名(我认为)与 HTTP 主机名不同,所以也许 openssl 客户端自动更正了,这是我所期望的?
答案1
不同之处在于旗帜servername
。
$ openssl s_client -crlf -connect example.com:443 -servername www.example.com
GET / HTTP/1.1
Host: example.com
[ENTER]
Apache 2.4.6:
[Sat Mar 05 18:13:23.217568 2022] [ssl:error] [pid 22316] AH02032: Hostname
www.example.com provided via SNI and hostname example.com provided via HTTP
are different
Apache 2.4.52 不会在日志文件中产生此错误。
而且也man openssl-s_client
很有帮助。