似乎我无法在正在运行的机器上获取另一个 SSL 证书。
我使用 Apache 2.2,我们有一个带有 SSLCertificate 的域,由 GlobalSign 签名。现在我想为同一台机器上的另一个域添加另一个证书 (letsEncrypt)。(SNI)
为此,我按照网站上的说明,在另一台机器上使用 certbot certonly -manual 创建了一个证书,然后将其放在我的网络服务器上。
我在那里从 apache 更改了 ports.conf 并添加NameVirtualHost *:433
并将 sites/available/default-ssl 的 VirtualHost-Statement 从 更改_default_:433
为*:433
。
然后我将 SSL-vHost 添加到新域的配置文件中
<IfModule mod_ssl.c>
<VirtualHost *:433>
ServerAdmin [email protected]
DocumentRoot /var/www/newdomain/html
ServerName domain.org
ServerAlias www.domain.org
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/chain.pem
#Setting goes here
</VirtualHost>
</IfModule>
当我跑步时apache2ctl configtest
我仍然
[Fri Mar 31 15:55:37 2017] [warn] _default_ VirtualHost overlap on port 433, the first has precedence
为什么?当我尝试通过 https 访问新域时,它们显示浏览器仍然获取旧的 GlobalSign-Cert,该证书适用于完全不同的域,因此不被接受:
domain.org uses an invalid security certificate.
The certificate is only valid for the following names: signeddomainsiown.org
Error code: SSL_ERROR_BAD_CERT_DOMAIN
我明白了,肯定有某个条目“先出现”,而服务器发送了错误的证书,或者证书链是错误的,但我该如何解决这个问题?我已经 grep 了其他默认我的配置中有条目,但没有找到任何东西。
答案1
您不能在同一个 Apache 实例上使用两个单独的 SSL 证书。原因是 NameVirtualHost 配置是在与 Web 服务器建立连接后查找的,在本例中是通过端口 443 上的 SSL 进行查找的。为此,它会选择第一个配置的证书,因为在建立连接之前它不会有主机信息。
就您而言,您必须对两个域名使用单个 SSL 证书,但要获取可用于多个域名的证书。它通常称为 SAN(主题备用名称)证书,我们可以在其中添加多个域名(通常最多 10 个)