服务器证书不包含与服务器名称匹配的ID

我们的服务器昨天升级了,所以它现在有一个更新的Ubuntu,Apache 2.4.10,PHP等。我把所有的东西都回来了,Apache开始抱怨我的configuration。

服务器托pipe使用通配符为不同客户提供dynamic内容的站点,并为这些客户提供针对不同服务的3个通配符证书。

具有通配符的configuration的一部分如下所示:

<VirtualHost *:80> ServerName *.dashboard.example.com ServerAlias *.dashboard.example.com RewriteEngine On RewriteCond %{HTTP_HOST} ^(.+)\.dashboard.example\.com$ RewriteRule ^/(.*)$ https://%1.dashboard.example.com/$1 [R=302,L] </VirtualHost> <VirtualHost *:443> ServerAdmin [email protected] ServerName *.dashboard.example.com ServerAlias *.dashboard.example.com DocumentRoot /var/www/dashboard.example.com/web <Directory /> AllowOverride All Options -Indexes +MultiViews +FollowSymLinks Order Deny,Allow Allow from all </Directory> ErrorLog /var/log/apache2/dashboard.example.com-error.log CustomLog /var/log/apache2/dashboard.example.com-access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/bundle_wc_dashboard_example_com.crt SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key </VirtualHost> 

请注意,我正在使用一个包作为证书文件。 在使用SSL检查时,对中间文件和根文件使用单独的文件会导致更糟糕的结果。 GeoTrust证书然后不被识别。 我的SSL证书供应商解释为Apache 2.4,证书应该是捆绑的。

所以这对我不起作用:

 SSLCertificateFile /etc/ssl/certs/wildcard_dashboard_example_com.crt SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key SSLCertificateChainFile /etc/ssl/certs/GeoTrust_Global_CA.crt SSLCertificateChainFile /etc/ssl/certs/RapidSSL_SHA256_CA_G3.crt 

但是,上面是Apache 2.2的工作。

当我尝试启动Apache时,它抱怨ServerName值:

 [FAIL] Reloading web server: apache2 failed! [warn] The apache2 configtest failed. Not doing anything. ... (warning). Output of config test was: AH00526: Syntax error on line 42 of /etc/apache2/sites-enabled/3-production.conf: Invalid ServerName "*.dashboard.example.com" use ServerAlias to set multiple server names. Action 'configtest' failed. The Apache error log may have more information. 

所以看起来星号是不允许的。 如果我删除星号,apache会启动,但在域的错误日志中会出现一个错误:

Fri Mar 11 10:32:13.821304 2016] [ssl:warn] [pid 18019] AH01909:dashboard.example.com:443:0服务器证书不包含与服务器名称匹配的ID

从其他来源,我发现了下面的命令,应该用来确定应该用作ServerName的CommonName:

openssl x509 -in wildcard_dashboard_example_com.crt -noout -subject

哪个返回:

subject = /CN=*.dashboard.example.com

我的浏览器显示一个绿色的锁,但SSL检查抱怨我缺less一个中间/链证书文件(见截图)。 相同的问题发生在同一台服务器上的其他两个通配符域和一个不是通配符的正常子域。 即使有apache声明server certificate does NOT include an ID which matches the server name 。 该网站使用通配符为不同客户提供dynamic内容,并为这些客户提供针对不同服务的3个通配符证书。

任何想法如何我可以解决这个问题? 还有什么我可以做检查什么是错的?

SSL检查失败

2016年5月18日更新

我在四月初解决了这个问题。 看来提供SSL证书的公司给了我们一个旧的根证书。 他们邮寄给我一个包含捆绑证书和单独证书文件的zip文件。 我试过多次安装。 然后,我将所有文件的内容与其他工作的网站进行了比较。 我注意到一个区别,并从他们的网站手动重新下载证书。

GeoTrust证书是不同的。 安装完毕后,所有的工作都像一个魅力。 我的老板告诉我他会联系他们,但不幸的是,这一切都没有发生。 无论如何,它现在工作愉快。

如果证书仅对*.dashboard.example.com有效,则对dashboard.example.com无效(后者与通配符不匹配)。

ServerName用于指定站点的规范名称(单个名称)。
其他名称和通配符只能进入ServerAlias

设置例如ServerName foo.dashboard.example.com应该工作(与您有的ServerAlias结合)。

关于证书链中提到的问题,这些与实际问题似乎没有关系。
我会build议确保所有必需的中间证书正确捆绑。

正如你所说的, SSLCertificateChainFile已经过时了,你不需要使用它,你可以把所有的证书放在SSLCertificateFile

Qualy的SSL实验室testing可用于查看是否有任何中间证书遗漏或是否存在其他问题。