我们的一位客户在尝试访问我们的应用时收到此错误。错误消息如下:
“您尝试访问xxx.foo.com
,但实际上您访问的服务器标识为yyy.bar.com
。这可能是由于服务器配置错误或某些更严重的问题造成的……”
我们的应用程序中唯一的请求yyy.bar.com
是标题中的 javascript 文件(格式https://yyy.bar.com/script.js
:)。
我无法在本地重现此问题,也没有其他用户报告此问题。我确信这是客户端机器上的设置,但在 Chrome 的内容设置/证书管理页面中搜索后,我无法找出可能导致这种情况仅发生在一个特定客户端上的原因。
(笔记,全部客户的机器受到影响。可能是某些防病毒配置,或者是他们的路由器出了问题?
答案1
使用基于 PORT 或 IP 的虚拟主机。基于 HOSTNAME 的虚拟主机与在两个主机上使用 SSL 不兼容。
答案2
他们在 Windows XP 上运行 Chrome,由于它使用 MS 加密库,因此在 XP 上运行时不支持 SSL SNI。 (更新:Windows XP 上的 Chrome 6.0 及更高版本支持 SNI) 它会在那种情况下重现(或者在 XP 上的 IE 中也是如此)。有关支持 SNI 的浏览器的更完整列表,请参阅这个维基百科部分。
对于工作客户端,他们正在访问其中的资源https://xxx.foo.com
,并且由于他们支持 SNI,所以他们正在获取xxx.foo.com
Web 服务器提供的证书。
对于此 Windows XP 客户端,它正在请求资源https://xxx.foo.com
并获取该 SSL 端口的默认证书;该yyy.foo.com
证书对于该名称无效。
您的 Web 服务器是什么?它的 SSL 侦听器是如何配置的?