记一次粗心的 SSL 配置错误

近段时间发现自己自签发的 SSL 证书显示为 linode 签发的一个已过期的自签发证书。百思不解,还咨询了 Linode VPS 的支持人员。最后发现是在某次升级系统之后,mod_ssl 的一个默认配置没有正确修改导致了这个问题。

为了能在登录和访问网站 WordPress 管理后台的时候使用 HTTPS 加密连接,以保证登录过程和后台数据得到加密保护,我在自己的 Linode VPS 上使用自签发的 SSL 证书来给 HTTPS 连接提供签名。我将自签发的证书添加为受信任的根证书颁发机构中,可以在访问的时候不再收到证书不安全的提示。本来一直用得好好的,但是在5月中旬的时候突然发现:

  1. 访问 cnzhx.net 主域名的时候,浏览器提示证书是 linode 签发给 linode 的,并且 6 月份过期(我的证书是 cnzhx.net 签发给 cnzhx.net 的)。
  2. 同时还发现访问子域名 test.cnzhx.net 的时候却一切正常。

于是开始找原因,尝试解决。但是断断续续弄了个把月才发现,原来那时候升级系统的时候,mod_ssl 自带的默认 /etc/httpd/conf.d/ssl.conf 配置文件发生了变化导致的(我用的是 CentOS + LAMP)。

在这个默认的 /etc/httpd/conf.d/ssl.conf 配置文件中出现了下面的内容:

<VirtualHost _default_:443>
    ......
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    ......
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    ......
</VirtualHost>

这里指定的证书与我自签发的证书不同。加密访问服务器 cnzhx.net 域名的时候,第一个出现的配置被使用,根本轮不到使用我自己签发的证书 cnzhx.net.crt,于是导致前述问题。

解决方法是要么注释掉或删除上面文件中的这两行,要么将其后面的 crt 和 key 文件改成主域名使用的证书文件。

这是个非常低级的错误,居然让我给经历了一次,还盘查了将近一个月,愣是没想到问题可能出现在 ssl.conf 文件上 —— 因为之前一直好好的。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/a-mistake-about-ssl-config/>。转载请保留此信息及相应链接。

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>