某些虚拟主机上的SSL抱怨错误的域名

所以我最近碰到这个问题,想在这里描述问题和解决scheme:

我在httpd服务器上有几个虚拟主机,并开始通过certbot-auto工具在其上安装letsencrypt SSL证书。

这一直工作得很好,直到一些域名会在浏览器中抛出证书属于另一个域名并且不安全的错误。 该域的SSL设置与其他可用的SSL设置完全相同。 他们都在同一个IP地址上,configuration是由certbot-auto工具创build的。 在浏览器中显示的域是ssl证书指向的错误域是系统上的其他域之一。

由于SSLconfiguration“开箱即用”设置的方式,CentOS(以及其他发行版)可能会出现此问题。

在这里创build问题的configuration设置是

NameVirtualHost *:443 

指令。

对于非ssl,指令NameVirtualHost *:80存储在/etc/httpd/httpd.conf并首先被加载。 当加载/etc/httpd/conf.d/*.conf中的其他虚拟主机configuration时,该指令已经被应用。 所以不需要在虚拟主机指令中再次包含它。

但是,对于SSL,NameVirtualHost指令存储在/etc/httpd/conf.d/ssl.conf 。 这意味着它与同一个文件夹中的其他虚拟主机configuration一起加载。 如果您现在有一个以“s”( S sl.conf)之上的字母开头的configuration文件,则尚未加载用于SSL的NameVirtualHost指令,因此,SSL证书默认为该虚拟主机的默认域。

解决scheme是在httpd.conf中包含用于SSL的NameVirtualHost指令,而不是确保它可用于/etc/httpd/conf.d文件夹中的所有虚拟主机。 它必须从ssl.conf中删除,因为它不应该存在两次。