我广泛使用 Firefox 来访问和排除大量的 Web 应用程序故障,其中许多都在 apache 虚拟主机环境中运行。
我遇到的一个问题是,在启用 SSL 的服务器上,我无法覆盖主机名来访问正确的虚拟主机。
通过 HTTP,人们可以访问 IP 地址http://1.2.3.4/page.html
并伪造host:
具有不同值的标头来访问不同的虚拟主机。
例如,这些是等效的:
http://my.virtualhost.example.com
http://1.2.3.4
带标题host: my.virtualhost.example.com
。
使用 HTTPS 时这变得不可能,因为在建立 TLS 连接之前必须知道主机名,因此 apache 无法知道要为哪个 SSL 虚拟主机提供服务。
解决方法是覆盖服务器名称指示TLSClientHello
请求中的(SNI)字段。
有没有办法用 Firefox 插件或扩展覆盖 SNI 值?
我在 Windows 7 上使用 Firefox 40。
答案1
您只需将要使用的名称/ip 映射添加到 hosts 文件中,然后使用您想要的名称访问网站即可。除非您使用代理,否则它将使用 hosts 文件来确定 IP 地址,并使用您提供的名称作为 SNI 名称和 Host 标头内的名称。有关如何修改此文件的详细信息,请参阅http://www.rackspace.com/knowledge_center/article/how-do-i-modify-my-hosts-file