SNI和HTTP提供域之间的冲突

我最近把一个WordPress网站从一个小型商店从托pipe服务提供商移到了我自己运行的Ubuntu Server 12.04.2 LTS和Apache 2.2.22的服务器上。 我需要商店的SSL。 我在服务器的一个新的IP上设置了几个简单的虚拟主机,一个绑定到特定IP的端口80,另一个绑定到端口443.在虚拟主机configuration中都有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 

我期望缓慢与上述信息有关。 任何想法,为什么出现,我能做些什么呢?

看看你的访问日志(不是错误日志)。 随着错误的时间和date,你应该能够识别出错的请求,并找出用户代理。 就我而言,这是一个bot:

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

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

除非我误解,否则在TLS协商中,客户端发送两次主机名:一次在SNI(服务器名称指示)中build立SSL连接之前,一次在实际HTTP请求之后。 如果服务器名称不匹配,则表示客户端损坏,应该与您的服务器configuration无关。

也许他们有一天会修复他们的机器人,同时你可能会忽略它。 我怀疑这可能会导致主机缓慢,除非请求的速度非常快。

也许这个错误是由一些客户端故意唤起的,来testing你的服务器的漏洞。 我发现来自researchscan367.eecs.umich.edu的请求触发了我维护的服务器上的错误。 在这种情况下,发生错误是一件好事。

我很好奇什么样的攻击是可能的,我在安全堆栈交换中提出了这个问题: Apache2的错误代码AH02032阻止了什么样的攻击?

听起来像一个客户端问题,一开始看…什么浏览器造成这个问题?

该消息将build议在SSL连接设置期间客户端发送的主机名与客户端在SSL层启动后在HTTPS请求中发送的主机名不同。

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