我正在尝试在一台 Apache Web 服务器上为我的两个域名设置 SSL 证书。我的两个域名都有两个证书。
我为我的两个域名创建了两个虚拟主机:
<VirtualHost *:443>
NameVirtualHost *:443
ServerName domain1.com
...
..
SSLCertificateFile /etc/pki/tls/certs/domain1.cer
SSLCertificateKeyFile /etc/pki/tls/private/domain1.pem
..
</VirtualHost>
<VirtualHost *:443>
NameVirtualHost *:443
ServerName domain2.com
...
SSLCertificateFile /etc/pki/tls/certs/domain2.cer
SSLCertificateKeyFile /etc/pki/tls/private/domain2.pem
..
..
</VirtualHost>
SSL 证书加载并显示域 1 的有效证书,但在访问域 2 时,它仅加载域 1 的证书。
我还需要做哪些改变才能使其发挥作用?
答案1
“一般来说,不可能在同一个 IP 地址和端口上托管多个 SSL 虚拟主机。这是因为 Apache 需要知道主机的名称才能选择正确的证书来设置加密层。但所请求主机的名称仅包含在 HTTP 请求标头中,而 HTTP 请求标头是加密内容的一部分。因此,在协商加密之前,它不可用。这意味着无法选择正确的证书,客户端将收到证书不匹配警告,并且容易受到中间人攻击。”——http://wiki.apache.org/httpd/NameBasedSSLVHosts