【问题标题】:Apache with two urls and two different SSL certificates具有两个 url 和两个不同 SSL 证书的 Apache
【发布时间】:2011-04-05 20:00:18
【问题描述】:

我会用一个例子来问这个问题——我有一个设置,nginx,django,apache(nginx 将 ssl 请求转发到 apache)

我有一个网站https://www.xyz.com,它有一个与之关联的 ssl 证书,客户端在连接时使用它。 比方说,我有另一个域名 www.abc.com,我想将它分配给与 xyz.com 相同的服务器

也就是说,当用户在浏览器中输入https://www.abc.com/ 时,它应该会显示与https://www.xyz.com/ 相同的网站。

现在要实现这一点,我需要购买另一个 ssl 证书吗?如果我这样做,我将如何更改 http.conf 文件以将此新证书用于另一个 url?

或者我可以使用其他方法吗?

【问题讨论】:

    标签: django apache ssl nginx


    【解决方案1】:

    只要 www.abc.com 和 www.xyz.com 有不同的 IP 地址,您就可以从同一个 httpd 实例托管它们。您将需要两个证书(除非两者都是公共域的子域并且您获得了通配符证书)。将它们设置为两个基于 IP 的虚拟主机,具有相同的内容。

    请参阅http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts 了解原因。

    <VirtualHost 127.0.0.1:443>
        SSLEngine on
    
        SSLCertificateFile      /etc/ssl/www.abc.com.crt
        SSLCertificateKeyFile   /etc/ssl/www.abc.com.key
        # etc
    </VirtualHost>
    <VirtualHost 127.0.0.2:443>
        SSLEngine on
    
        SSLCertificateFile      /etc/ssl/www.xyz.com.crt
        SSLCertificateKeyFile   /etc/ssl/www.xyz.com.key
        # etc
    </VirtualHost>
    

    【讨论】:

    • 嘿,谢谢 p00ya,如果 www.abc.com 和 www.xyz.com 有相同的 IP 地址怎么办?我的服务器上已经有 www.xyz.com,我将把 www.abc.com 注册到同一个 IP 地址,这样我就有了同一个站点的两个 url。
    • 您可以尝试在 Turbo J 的回答中使用 SNI,但许多浏览器不支持此 TLS 扩展(例如 Windows XP 下的 Internet Explorer)!如果它们确实是同一个站点,您是否考虑过仅发出 HTTP 重定向?
    【解决方案2】:

    您真的尝试过询问 Google 吗?我的第一个热门歌曲是:http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
    在 apache wiki 上。

    如果您有多个 IP 地址,我建议您使用基于 IP 地址的 SSL 而不是基于名称的 SSL,因为旧客户端(XP 上的 IE)不支持 SNI。

    【讨论】:

      【解决方案3】:

      (我正在复制/粘贴我自己对this question 的答案的略微修改版本。到目前为止,现有答案中没有建议的是使用多个主题替代名称。)

      简单的方法是能够在两个不同的 IP 地址(可能是同一台机器)上托管 www.abc.comwww.xyz.com,在这种情况下,您可以为每个地址配置不同的证书。

      如果您被限制为两个名称只有一个 IP 地址(和端口),如果您想使用两个不同的证书,则需要使用 Server Name Indication (SNI) 扩展,它是相对较新的(并且可能并非所有浏览器都支持,但它似乎适用于最近的浏览器)。

      如果您不能使用 SNI,则需要相同的证书同时对 www.abc.comwww.xyz.com 有效,这可以通过将两个 DNS 条目放在主题备用名称中来实现扩展名,或者如果两个主机的模式合适,则可能使用通配符(请注意,如果通配符用于两个不同的域而不是子域,则不太可能接受)。这两个选项可能比使用商业 CA 的两个不同证书更昂贵。

      【讨论】:

        【解决方案4】:

        我最终为两个域购买了单个多域证书 (UCC)。 并修改了 nginx 配置,将两个站点指向同一个 Apache 服务器。

        因为我在 Apache 前面有 nginx,所以我不需要更改 http.conf 配置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-01
          • 2012-03-23
          • 1970-01-01
          • 2012-02-08
          • 2012-05-27
          • 2022-07-29
          • 1970-01-01
          • 2018-11-19
          相关资源
          最近更新 更多