一台 Apache2 服务器上多个域的 SSL 证书问题
SSL Certificate Issue with Multiple Domains on One Apache2 Server
我有一个服务器运行一个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 - 目前一切都很好。
我正在尝试将 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
.
相关的文件
奇怪的是,如果我使用 sudo apache dissite domain1
禁用 domain1.com
,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
综上所述,请告诉我为什么启用 domain1.com
时对 domain2.com
的请求会失败?
所以是的.. 执行上述操作都很好并且应该有效。
如果不行,一定要检查ServerName
字段的拼写,不要熬夜!
我有一个服务器运行一个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 - 目前一切都很好。
我正在尝试将 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
.
奇怪的是,如果我使用 sudo apache dissite domain1
禁用 domain1.com
,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
综上所述,请告诉我为什么启用 domain1.com
时对 domain2.com
的请求会失败?
所以是的.. 执行上述操作都很好并且应该有效。
如果不行,一定要检查ServerName
字段的拼写,不要熬夜!