SNI和HTTP提供的域之间的冲突


22

我最近将一个带有小商店的WordPress网站从托管提供商转移到了我自己的运行Ubuntu Server 12.04.2 LTS和Apache 2.2.22的服务器上。我要求商店使用SSL。我在服务器的新IP上设置了几个简单的虚拟主机,一个绑定到特定IP的端口80,另一个绑定到端口443。在vhost配置中都有ServerName www.example.comServerAlias example.com。我有SSLStrictSNIVHostCheck off

该站点运行速度非常慢,但是正在运行。我在错误日志中得到以下内容。

[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different

我希望速度慢与上述消息有关。有什么想法为什么会出现以及我能做什么呢?

Answers:


24

查看您的访问日志(而不是错误日志)。通过错误的时间和日期,您应该能够确定有问题的请求并找出用户代理。就我而言,它是一个机器人:

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"

我的服务器使用HTTP 400回答:错误的请求。

除非我弄错了,否则在TLS协商中,客户端会发送两次主机名:一次在SNI(服务器名称指示)中建立SSL连接之前,一次在实际HTTP请求中之后。如果服务器名称不匹配,则表明客户端已损坏,并且与服务器的配置无关。

也许他们有一天会修复自己的机器人,同时您可能会忽略它。我怀疑这会导致主机运行缓慢,除非请求的发送速度很高。



1

乍一看听起来像是客户端问题...哪个浏览器引起了此问题?

该消息表明,在SSL层建立后,客户端在ssl connectionsetup期间发送的主机名与客户端在HTTPS请求中发送的主机名不同。


我不知道是什么原因造成的。该错误不报告客户信息。我只知道我经常看到这种情况。我希望ServerAlias足以使它高兴,因为从理论上讲,服务器知道www.domain.com和domain.com是等效的。
flickerfly 2013年

@flickerfly是的,这是一个有问题的客户端,除非可以识别它,否则您将无能为力。
迈克尔·汉普顿

2
好的,只是通过删除端口443的NameBasedVirtualHost指令来禁用SNI。我想我现在不需要它。我认为应该可以。
flickerfly 2013年

1

就我而言,创建带有下划线的新虚拟主机就是问题。我有一个通配符SSL证书。

没用:

<VirtualHost *:443>
        SSLEngine on
        ServerName sub_domain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

尽管Apache确实成功重启,但出现HTTP 400错误。在错误日志中:

[Wed Sep 05 11:28:00.349960 2018] [ssl:error] [pid 19906:tid 140392626808576] AH02031: Hostname sub_domain.example.com provided via SNI, but no hostname provided in HTTP request

但是删除下划线是可行的:

<VirtualHost *:443>
        SSLEngine on
        ServerName subdomain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

1
欢迎使用ServerFault。在主机名中加下划线与RFC背道而驰,并且会以多种方式破坏。 stackoverflow.com/questions/2180465/…–
小鸡

1
究竟!这就是为什么现在也将其作为参考。
MS Berends

0

检查/ etc / hosts文件,以查看是否将域名分配给本地(内部)IP地址。更改/ etc / hosts service nscd restart后,不要忘记重新启动名称服务缓存守护程序

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.