SSL 证书错误问题
最近朋友的网站遇到一个问题。他有一台腾讯云服务器,部署了 A、B 和 C 三个网站,其中 A 和 B 两个网站安装了 SSL 证书,并且 https 访问均工作正常。第三个网站 C 未安装 SSL 证书,但是在使用 https 访问 C 域名时,会打开已配置了 SSL 证书网站 A 的首页。 并且在谷歌中 site 网站 C 查询收录时,看到前两位收录的是 https 协议的 C 网站首页,但该页面的标题和描述内容,均为 A 网站的内容。
在浏览器上访问网站 C 的 https 的网址时,会提示如下所示的错误:
攻击者可能会试图从 youdomain-c.com 窃取您的信息;此服务器无法证明它是 youdomain-c.com;其安全证书来自youdomain-a.com;
同一 IP 部署多个网站,如果其中某个网站配置了 SSL 证书,但是其余的网站没有配置,那么经常会发生前面描述的状况。例如,如果网站 example.com(默认站点)和 example.org 托管在同一台服务器上。如果 example.com 网站配置了SSL证书,而网站 example.org 没有配置,那么 example.org 就会发生前面描述的问题。
处理过程
这里在简单介绍一下朋友服务器的情况,他购买的是腾讯云服务器,安装的是 Ubuntu 系统,手动部署了 LAMP 环境。
为了解决该问题,我建议朋友为网站 C 也安装 SSL 证书,这样应该就不会再出现上面的问题了。但是朋友却说他当初也尝试过这种方法,但是不知道为什么,C 网站的证书配置了,但是依然不起作用。
为了进一步确定问题,我们决定重新申请证书,并为 C 网站配置该 SSL 证书。
我们为 C 网站申请了免费的腾讯云 SSL 证书,然后将证书上传至证书目录,并在 /etc/apache2/sites-available 下的 C 网站配置文件中,建立了新的 <VirtualHost * 443>配置块来配置证书,一切看起来都是正常的,在配置完证书后,我们使用下面的命令重启 Apache2 。
service apache2 restart
按道理 C 网站在配置了 SSL 证书后,应该可以正常通过 HTTPS 访问了,但是再次访问的时候,却依然显示网站 A 的内容。
在网上查找了大量的资料,依然没有找到问题的原因。无意之中,我打开了apache2的虚拟机启用目录/etc/apache2/sites-enabled/,发现网站 C 配置文件的更新时间是很久以前。按道理,我们修改了/etc/apache2/sites-available 目录下的 C 网站配置文件后,应该自动更新到网站启用目录才对。
于是我尝试重新启用 C 网站虚拟主机:
a2ensite domain-c.com.conf
系统却返回如下的错误提示:
ERROR: Site domain-c.com not properly enabled: /etc/apache2/sites-enabled/domain-c.com.conf is a real file, not touching it
根据错误提示,指出 /etc/apache2/sites-enabled/domain-c.com.conf 是一个真实的文件,而不是指向目录的软链接。
我重新打开 /etc/apache2/sites-enabled/ 目录,发现网站 C 的配置文件果然是一个文件而不是软链接。于是在本地电脑备份了该文件,然后将其从 /sites-enabled/ 目录中删除。
然后重新使用下面的命令启用 C 网站配置文件:
a2ensite domain-c.com.conf
然后,系统返回下面的提示内容:
Enabling site domain-c.com.
To activate the new configuration, you need to run:
systemctl reload apache2
执行下面的命令重启 Apache2:
systemctl reload apache2
再次尝试 https 访问 C 网站,一切恢复了正常。
总结
现在对整件事情进行复盘,应该是朋友不太熟悉 Apache2 的配置方法,错误的在 /sites-enabled/ 目录下创建了网站 C 的实体配置文件,而不是通过 a2ensite 启用网站,导致了后续出现配置 SSL 过程中的错误。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/certificate-name-mismatch-error/