Localhost Apache 服务器添加并使用 SSL证书

摘要:本文记录了我在Ubuntu 20.04 VM上面通过修改host文件来将自己的域名192.168.1.98 指向192.168.1.98并配置SSL证书来支持HTTPs访问本地服务器的操作。

设备:

  1. 当前Ubuntu server,运行Apache支持访问https://zangchuantao.com
  2. Ubuntu server VM, 运行Apache, wordpress来负责生成html文件。带Firefox浏览器以支持wordpress操作。

我的这个博客使用wordpress搭建的,wordpress很好用,只是树大招风,它的PHP文件和各种插件经常被人瞅上从而导致被黑,我就中过几次招,最终决定将自己博客做成经典的HTML+Javascript+CSS格式,但是wordpress又实在好用,用户编辑界面很友好,像word里一样写个文档,写完点一下发布就可以了。所以最终确定了如下方案:

找另一个Ubuntu machine VM 本地运行wordpress,我在那里面可以照常写作操作,写完的内容使用1个叫wp2static的wordpress插件来生成静态的HTML文件,然后再把这些HTML文件复制到我现在的Ubuntu server。Ubuntu machine好解决,用个虚拟机就可以了,再安装Apache和Wordpress即可,只是该怎样让VM上的浏览器访问真实域名时跳转到本地wordpress本地运行呢?即在VM的Firefox里输入https://zangchuantao.com,它访问的是本地local apache server以及wordpress?经过一番摸索,记录如下:

1 修改Host文件,/etc/hosts文件里添加这行:127.0.0.1 192.168.1.98

2 修改Apache 配置文件, 在virtualhost相关的配置文件里添加该域名对应的SSL证书和SSL 密钥文件,具体在我的例子中,我直接修改了/etc/apache2/sites-available/default-ssl.conf:

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerName 192.168.1.98           
                SSLEngine on
                SSLCertificateFile    PathTO_fullchain.pem
                SSLCertificateKeyFile PathTO_privkey.pem

上面fullchain.pem和privkey.pem分别是我用Let's eccrypt bot生成的SSL证书和密钥文件,从当前server 复制得到。

3 重启apache 服务就可以了 sudo service apache2 restart

4 本地启动Firefox,输入https://zangchuantao.com 就可以访问本地的wordpress了。现在的Firefox默认启动了DNS over HTTPS,所以上面的Host文件修改无效,它并会访问192.168.1.98。这确实是个防止DNS截至的好特性。只是正好阻挡了我的这一个需求。因此,Firefox ->Preferences -> Network Settings里面,将默认打勾的 Enable DNS over HTTPS去掉勾,保存就可以了。