假设我有两个站点,它们当前配置在 VirtualHost 块中的同一个框中<VirtualHost 192.168.1.1:80>
。如何配置 Apache,以便我可以将两个站点置于两个不同的 SSL 证书下?
http://a.com => https://b.com
http://b.com => https://a.com
答案包含指向好的关于设置的教程非常棒。
谢谢。
答案1
你不知道。至少现在还不知道,在实时网络服务器上还不知道。
SSL 协商、密钥交换、发送证书等都是在请求传输之前完成的 —— 也就是说,在服务器知道客户端试图连接到哪个站点之前。但是,该站点必须提供正确的证书,否则浏览器会将其标记为欺诈站点。
因此,SSL 要求每个 IP/端口组合都有一个证书。除了更改 SSL 本身之外,没有其他办法可以解决这个问题。如果您希望在同一端口上使用具有不同证书的多个 SSL 站点,则每个站点都需要不同的 IP。(尽管 SSL 站点通常位于端口 443 上,仅供参考...)
您可能找到的任何解决方法都需要两个站点共享一个证书。就 SAN 证书而言,它们的费用似乎是常规 SSL 证书的 2 到 4 倍——并且可能需要大量验证。如果您不拥有这两个域名,那么祝您好运,为它们两个都获得一个证书。
如果你想尝试一下,你可能需要看看http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI-- 它解释了如何在一个 IP 下在 Apache 中设置 TLS 虚拟主机,每个虚拟主机使用不同的证书。但请注意,我说的是 TLS,而不是 SSL -- 在 SSL 下没有办法,而且即使使用 TLS 也不能保证它能正常工作,因为该功能需要 TLS 支持(以及选修的在客户端和服务器中都启用了此扩展。它是可选的,客户端在握手期间不必提供服务器名称(XP 和许多移动浏览器特别容易不提供),这使得任何共享该 IP 的网站都无法访问。如果这是您打算让人们真正查看的网站,在我看来这不是一个选项。
答案2
你可以用 mod_rewrite 魔法来实现。这是一个 hack,但显然是有效的:
答案3
这是可以做到的!诀窍是单身的SSL 证书具有主题备用名称您希望从同一服务器提供的所有额外域名的 DNS 条目。假设您从一家主要认证机构购买 SSL 证书,您可能需要为该类型的“多域”证书支付一些额外费用,并且添加这些主题备用名称条目的说明因供应商而异。
在网上搜索“主题备用名称”或“多域证书”以及您的认证机构的名称,您就能找到您正在寻找的说明。