一个Apache2服务器上具有多个域的SSL证书问题

时间:2017-03-14 23:53:01

标签: ssl apache2

我有一台运行LAMP堆栈的服务器:

me@server:~$ sudo apachectl -v
Server version: Apache/2.4.10 (Debian)

me@server:~$ cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
...

在这台服务器上,我有两个域 - 一个使用SSL,另一个没有SSL - 所有内容目前都是hunky-dory。

我正在尝试将SSL添加到第二个站点,但是对第二个站点的请求因问题而失败:

[FIREFOX]
domain2.com uses an invalid security certificate. 
The certificate is only valid for the following names: domain1.com
Error code: SSL_ERROR_BAD_CERT_DOMAIN

[CHROME]
NET::ERR_CERT_COMMON_NAME_INVALID

注1:我已检查过我的Apache版本允许在同一台服务器上安装多个SSL站点。

这让我相信,调用domain2.com时正在读取的SSL文件实际上是与domain1.com相关的文件。

奇怪的是,如果我使用domain1.com停用sudo apache dissite domain1,则SSL在https://domain2.com上运行正常。这表示SSL已正确安装,但服务器上的站点并非全部已正确配置

.conf文件位于以下位置:

me@server:~& cat /etc/apache2/sites-enabled/domain1
[...Port 80 config redacted...]
<VirtualHost *:443>
  SSLEngine on
  SSLProtocol All -SSLv2 -SSLv3
  SSLCertificateFile /etc/apache2/ssl/domain1/server.crt
  SSLCertificateKeyFile /etc/apache2/ssl/domain1/key.txt
  SSLCertificateChainFile /etc/apache2/ssl/domain1/intermediate.crt

  ServerName domain1.com
  ServerAlias www.domain1.com

  <Directory /var/www/domain1>
    [REDACTED]
  </Directory>

  [Logging information redacted]
</VirtualHost>

    me@server:~& cat /etc/apache2/sites-enabled/domain2
[...Port 80 config redacted...]
<VirtualHost *:443>
  SSLEngine on
  SSLProtocol All -SSLv2 -SSLv3
  SSLCertificateFile /etc/apache2/ssl/domain2/server.crt
  SSLCertificateKeyFile /etc/apache2/ssl/domain2/key.txt
  SSLCertificateChainFile /etc/apache2/ssl/domain2/intermediate.crt

  ServerName domain2.com
  ServerAlias www.domain2.com

  <Directory /var/www/domain2>
    [REDACTED]
  </Directory>

  [Logging information redacted]
</VirtualHost>

很明显,两个站点都应用了相同的配置项,但相对于该站点的服务器上的特定SSL文件。请注意,每个站点的SSL捆绑包均由同一供应商提供。

此外,证书应该是正确的:

me@server:/etc/apache2/ssl/domain1$ openssl x509 -in server.crt -noout -subject
subject= /CN=www.domain1.com

me@server:/etc/apache2/ssl/domain2$ openssl x509 -in server.crt -noout -subject
subject= /CN=www.domain2.com

从这一切开始,有些人可以告诉我为什么domain2.com启用后domain1.com的请求失败了?

1 个答案:

答案 0 :(得分:0)

所以是的..做上述事情都很好,应该可以。

如果不起作用,请务必检查ServerName字段的拼写,并且不要在深夜工作!