所以我最近遇到了这个问题,想在这里描述这个问题和解决方案:
我在 httpd 服务器上有几个虚拟主机,并开始通过 certbot-auto 工具在其上安装 letsencrypt SSL 证书。
最初,这运行良好,直到某些域在浏览器中抛出错误,指出证书属于另一个域并且不安全。该域的 SSL 设置与其他正常工作的 SSL 设置相同。它们都在同一个 IP 地址上,配置由 certbot-auto 工具创建。浏览器中显示的域是 SSL 证书指向的错误域,它是系统上的其他域之一。
答案1
由于 SSL 配置是“开箱即用”的方式,这个问题可能会出现在 CentOS(以及可能的其他发行版)上。
造成问题的配置设置是
NameVirtualHost *:443
操作说明。
对于非 SSL,该指令NameVirtualHost *:80
存储在 中/etc/httpd/httpd.conf
并首先加载。当 中的其他虚拟主机配置/etc/httpd/conf.d/*.conf
加载时,此指令已应用。因此无需在虚拟主机指令中再次包含它。
但是,对于 SSL,NameVirtualHost 指令存储在 中/etc/httpd/conf.d/ssl.conf
。这意味着它与同一文件夹中的其他虚拟主机配置一起加载。如果您现在有一个以“s”上方字母开头的配置文件(S
sl.conf),则 SSL 的 NameVirtualHost 指令尚未加载,因此 SSL 证书默认为该虚拟主机的默认域。
解决方案是在 httpd.conf 中包含 SSL 的 NameVirtualHost 指令,以确保它可用于/etc/httpd/conf.d
文件夹中的所有虚拟主机。但是,必须将其从 ssl.conf 中删除,因为它不应出现两次。