注: 本文参考自如何使用Debian 9上的Let加密保护Apache, 基本步骤几乎一样, 不过针对容器中搭建的网站会有一些区别。


0.前言

对于个人博客来说, 为网站加锁并不是一件必须的事情, 毕竟也很少会有人关心你在博客中的活动,也很少会有私密的信息交换。

那为什么还要为http加上s呢? 大概有以下几点: 首先就是看起来好看啊, 毕竟没人想让浏览器在自己的网址旁标上Not secure吧。 其次就是会对SEO友好,谷歌和百度等搜索引擎会更加偏爱有SSL层加密的网站。 再次, 这个是免费的哦,反正又不费太多事, 不妨试一试嘛。

因为在以前的文章中写了如何通过容器快速搭建网站, 所以这次就针对WP的容器进行SSL的安装和使用。


1.准备工作

在真正的安装之前, 需要确认做到这两件事。

首先是将容器的443端口暴露到服务器, SSL流量是走443端口的, 如果没有在容器中设置的话, 使用https访问网站将无法访问。 当然, 如果是按照我当时写的代码安装的容器就没有这个问题了。

第二件事就是要已经注册并解析好了域名, 在安装Let’s Encrypt证书时是需要验证域名的, 所以要确认域名可用。


2.安装Certbot

因为网站是运行在容器中的, 所以Certbot的安装方法和物理机的系统没什么关系。 现在WP的容器集成使用的是Debian下的apache, 所以要使用相应的Certbot安装方法。

1>将backports库添加至Debian

sudo vim /etc/apt/sources.list

在/etc/apt/sources.list中添加如下网址。

deb http://ftp.debian.org/debian stretch-backports main

之后退出插入模式,输入:wq后完成保存 (详情查找Vim使用方法)。

升级更新库列表。

sudo apt-get update

注: 以上操作均在容器中进行, root下使用下面命令进入容器后才可以进行上述操作(wordpress是该容器的名字)。 此外, 在第一次进入容器时是没有vim等软件的, 在先更新库列表后进行安装即可。

docker exec -it wordpress /bin/bash

2>安装Certbot

sudo apt install python-certbot-apache -t stretch-backports

3.配置环境

如果你在配置容器时加入了VITURAL_HOST参数, 那么本步骤就可以省略了。 但保险起见, 可以跟着检查一下。 下面是没有配置VITURAL_HOST参数时方法。

同样是在容器内, 转到/etc/apache2/sites-available目录, 会发现只有两个配置文件。

000-default.conf default-ssl.conf

经过我缜密的判断, 我们要用到的是000-default.conf文件 (如果提前设置参数的情况下, 此目录下的文件不太清楚, 猜测应该会有以那个参数命名的文件)。 可以copy一下这个文件, 重命名成自己网站的域名, 如elapse.life.conf。 使用vim打开文件, 在第一大块的注释最后一行发现如下代码。

#ServerName www.example.com

取消注释符, 然后将后面参数改成自己网站的域名。 如elapse.life。

之后执行以下命令来检测配置文件是否有误。

sudo apache2ctl configtest

看见输出Syntax OK即可, 可能会输出一些很奇怪的东西, 不必管它, 实测不会影响什么。


4.安装SSL证书

运行Certbot, 输入以下命令 (在容器的root用户下使用, example.com替换为自己的域名)。

certbot --apache -d example.com -d www.example.com

接下来就是选择和回车的游戏了, 选择的选项都不难看懂, 就不再很详细地去说了。 大体上就是首先要输入一个邮箱地址, 同意服务条款。 之后会让你选择要使用哪个配置文件, 选择自己上一步骤创建的自己域名命名的文件即可。 再后就是询问是否将HTTP流量全部重定向到HTTPS, 既然有为什么不用呢, 选择Redirect就可以啦。 最后看到输出的Congratulations就证明安装成功了。

此时在地址栏输入http://……访问网站时, 应该会跳转到https。 但是发现你在WP中设置的是http的地址, 这时候无法访问了怎么办(⊙_⊙?) 不怕, 使用phpmyadmin来修改数据库就可以了。 通过更改options内的前两项站点地址为https就能顺利登录网站。


5.设置续订

因为Let’s Encrypt的证书是有半年的使用期限的, 也就是说需要定时续订。 你可以用下面的命令进行续订。

certbot renew --dry-run

当然你肯定会忘的 (就像我一样), 这样就需要使用 crontab -e 里加一条自动运行的命令了。 我写的是下边这样, 你也可以设定其他的日子。

0 12 25 * * certbot renew –dry-run


6.The End

这样一来, 你的网站前面就会有一个小锁啦, 看起来就高大上一些了呢。。。 (如果没有的话, 点击看看是不是提示页面中有的资源不安全, 这就是说一些图片的链接还是http协议的, 在网站后台手动改成https就可以解决)

这时候一个网站看起来就有了基本的架子,可以安安全全地往里面添加喜欢的装饰和内容啦~

发表评论

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