具有多个 SSL 证书的多个子域名 { SSL 和 apache }

具有多个 SSL 证书的多个子域名 { SSL 和 apache }

我有一个指向域名的专用服务器 www.domain1.com。我为我的域名 x1.domain1.com 购买了 SSL 证书,花费 10 美元,因此我为所有子域名购买了 SSL 证书,因为通配符证书太贵了。

当我重新启动 apache 时,x1.domain1.com 正在设置为 x2.domain1.com 上的 SSL 证书,它显示“不受信任的警告”,表示此证书对其他域有效。我检查了证书本身,它显示了 x1.domain1.com 的域,即 x1.domain1.com 的证书

如何设置多个 SSL 虚拟主机?

我的配置文件是

<VirtualHost *:443>
        ServerAdmin [email protected]
        DocumentRoot /var/htm2/
        ServerName x1.domain1.com
        SSLEngine on
        SSLCertificateFile /usr/server.crt
        SSLCertificateKeyFile /usr/server.key </VirtualHost>



 <VirtualHost *:443>
        ServerAdmin [email protected]
        DocumentRoot /var/htm/
        ServerName x2.domain1.com
        SSLEngine on
        SSLCertificateFile /usr/l/server.crt
        SSLCertificateKeyFile /usr/l/server.key  </VirtualHost>

问题是我有一个专用的IP:141.XX.XX.X,但是当我去 https://x1.domain1.com 在最新的 chrome 或 Firefox 中,证书有效,但当我转到https://x2.domain1.com。它显示证书不受信任,并表示符合证书信任,因为该证书是用于另一个域的,我查看了该证书,发现它是 x1.domain1.com 的证书

我希望这两个网站都能被浏览

https:\\x1.domain1.com
https:\\x2.domain1.com   

没有任何端口或任何东西...我应该在上述配置中更改哪些设置才能实现这一点,导致 x2.domain1.com 显示 x1..domain 证书的问题是什么,以及我如何重定向

不使用 htaccess 将 http:\x1.domain1.com 更改为 https:\x1.domain1.com,如果使用 htaccess 那么怎么办?

还有如何重定向

答案1

目前几乎一半的互联网浏览器都不支持 SNI。因此,服务器必须决定将哪个证书发送给客户端,并且只知道客户端所连接的端口。如果您需要提供两个不同的证书,那么最好的选择可能是使用两个不同的端口。或者,您可以使用允许您将两个名称放在同一张证书中的服务。(例如,StartSSL 允许您将您验证的任何域的任何主机以任意组合放在您颁发的任何证书中。)

答案2

您需要将您的虚拟主机绑定到不同的 IP 地址或绑定到不同的端口。

问题是您不能在同一个 IP+PORT 上拥有两个 SSL 主机,因为主机名是加密内容的一部分,因此无法确定。因此它会选择其中一个虚拟主机并进行传输(通常是第一个虚拟主机)http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

正如 David Schwartz 所说,您也可以将所有名称放在一个证书中。按照 x509 的说法,这就是字段SubjectAlternateName

相关内容