现阶段网络安全越来越应该得到重视,各个阶段的网络劫持越来越严重了。微博、简书等各个比较主流的网站每天都要遭遇无数次的运营商劫持,而解决办法不是去找运营商扯皮,而是从自身开始全面部署HTTPS。HTTPS 通过 TLS 层和证书机制提供了内容加密、身份认证和数据完整性三大功能,可以有效防止数据被查看或篡改,以及防止中间人冒充。Let’s Encrypt 是由 ISRG 提供的免费 SSL 项目,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,现在已经得到 Google、Facebook 等大公司的支持和赞助,存在的 意义就是为了推动 HTTPS 的发展,目的就是向网站免费签发和管理证书。
准备
在部署之前,要首先把域名解析到你的服务器对应的 IP 上面,并且要测试可以可以 ping 通,因为之后的自动部署过程会通过这个方式来验证域名的所有权。这里最经常碰到的问题就是:
DNS problem: NXDOMAIN looking up A for www.xxx.com
这个问题的主要原因一般都是出现在 DNS 的解析上面的,但是我在部署的过程中发现本地机器可以 ping 的通,也可以正常访问,但就是在服务器上 ping 不通,这时候可以去看看域名解析的线路。如果是阿里云的话建议直接默认即可,选择单一的线路有可能会出现这个问题。
安装 Certbot
网络上有很多民间开发的一键部署工具教程,其实说的都是参差不齐。其实完全可以通过官方提供的部署工具,绝对是最方便快捷的。Let's Encrypt 官方推荐使用 Certbot 来一键部署,我们首先要安装一下,这里以 Ubuntu16.04 为操作系统, Nginx 为 Web 服务器:
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
这样就会安装一个 certbot 的工具,这个工具主要用来申请证书、自动部署以及日后的续约使用。
开始
Certbot 支持很多的操作系统和 Web 服务器,当然也有支持 Nginx 的,它提供了两种方式来部署,其实都差不多。
sudo certbot --nginx
运行命令后会让你选择一个需要配置证书的域名,根据数字选择即可:
然后会询问你是否要把 HTTP 的请求都跳转到 HTTPS :
运行这个命令后,将会得到一个证书给你,并且 Certbot 会自动编辑你的 Nginx 配置来保证可以正常使用。当然还可以手动来:
sudo certbot --nginx certonly
这个命令会帮你生成证书,并且保存下来,之后你就可以拿着证书自行去配置 Nginx 了。
自动续订
Let's Encrypt 申请的证书默认有效期是 90 天,在到期的前一个月是可以进行续订的。而且 Certbot 很人性化的附带一个 cron 作业,在到期之前会自动更新您的证书。我们可以通过运行以下命令来测试证书的自动续订:
sudo certbot renew --dry-run
该命令只是测试是否可以续约并且生成证书,但是并不会替换掉实际的证书,等我们测试确认可行后,就可以去掉--dry-run
参数并且把命令加入系统的定时任务中了。
@monthly root /usr/bin/certbot renew
欢迎关我的个人公众号:左手代码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。