Django 具有两个URL和两个不同SSL证书的Apache

Django 具有两个URL和两个不同SSL证书的Apache,django,apache,ssl,nginx,Django,Apache,Ssl,Nginx,我将用一个例子来问这个问题——我有一个设置,nginx,django,apache(nginx将ssl请求转发给apache) 我有一个网站,它有一个与之相关联的ssl证书,客户端在连接时使用它。 比如说,我有另一个域名www.abc.com,我想把它分配给与xyz.com相同的服务器 也就是说,当用户在浏览器中键入时,它应该显示与用户相同的网站 现在要实现这一点,我需要购买另一个ssl证书吗?如果这样做,我将如何更改http.conf文件以将此新证书用于另一个url 或者我可以使用其他方法吗?

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

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

也就是说,当用户在浏览器中键入时,它应该显示与用户相同的网站

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


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

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

看看原因


斯伦金安
SSLCertificateFile/etc/ssl/www.abc.com.crt
SSLCertificateKeyFile/etc/ssl/www.abc.com.key
#等
斯伦金安
SSLCertificateFile/etc/ssl/www.xyz.com.crt
SSLCertificateKeyFile/etc/ssl/www.xyz.com.key
#等

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

看看原因


斯伦金安
SSLCertificateFile/etc/ssl/www.abc.com.crt
SSLCertificateKeyFile/etc/ssl/www.abc.com.key
#等
斯伦金安
SSLCertificateFile/etc/ssl/www.xyz.com.crt
SSLCertificateKeyFile/etc/ssl/www.xyz.com.key
#等

你真的试过问谷歌吗?我的第一个热门歌曲是:
在ApacheWiki上


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

您真的试过问谷歌吗?我的第一个热门歌曲是:
在ApacheWiki上

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

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

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

如果两个名称只能有一个IP地址(和端口),如果要使用两个不同的证书,则需要使用相对较新的扩展名(可能不是所有浏览器都支持,但它似乎适用于最新的浏览器)

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

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

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

如果两个名称只能有一个IP地址(和端口),如果要使用两个不同的证书,则需要使用相对较新的扩展名(可能不是所有浏览器都支持,但它似乎适用于最新的浏览器)


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

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


由于我在Apache前面安装了nginx,所以我不需要更改http.conf配置。

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


由于我在Apache前面安装了nginx,所以我不需要更改http.conf配置。

嘿,谢谢p00ya,如果www.abc.com和www.xyz.com具有相同的IP地址会怎么样?我已经在服务器上安装了www.xyz.com,我将把www.abc.com注册到相同的IP地址,这样我就可以为同一个站点设置两个URL。您可以尝试使用SNI,就像在Turbo J的swer,但许多浏览器不支持此TLS扩展(例如Windows XP下的internet explorer)!如果它们真的是同一个站点,您是否考虑过只发送HTTP重定向?嘿,谢谢p00ya,如果www.abc.com和www.xyz.com具有相同的IP地址会怎么样?我的服务器上已经有www.xyz.com,我要将www.abc.com注册到相同的IP地址,以便
<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>