Let’s Encrypt使用之Certbot

Let’s Encrypt是一个免费开放的SSL项目,可以自动化的创建并安装证书,解决了HTTPS推广过程中的收费和配置复杂两个难题,Let’s Encrypt是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。Certbot则是一个简单易用的客户端,我们可以通过它简单的获取证书和定时更新,不需要复杂的操作。

安装

由于项目本身的开放性,衍生了大量的客户端。官方客户端有Certbot,第三方客户端则五花八门,各种编程语言所编写的客户端,林林总总的加起来差不多有上百款,其中有些知名度的被官方进行汇总。需要注意的是,官方并不检查第三方客户端的可用性、稳定性、安全性,所以对这方面不熟悉的,应该使用官方的客户端certbot,以免出现各种各样的意外状况。若是你不满足于官方客户端,可以查看官网罗列的第三方客户端列表,了解更加详细的信息。

certbot是一个非常小巧易用的Let’s Encrypt 证书自动安装客户端,可以傻瓜化的安装SSL证书并自动配置Web server,让没有电脑基础的人简单的安装并配置HTTPS,帮助有电脑基础的人节省时间,广泛支持各种常见的操作系统和Web server。

支持的Web server

  • Apache2
  • Nginx
  • Haproxy
  • Plesk

支持的操作系统

  • 各种Linux系统
  • MacOS
  • Web Hosting sevice

certbot官网选择下载适合自己系统版本,不同的系统以及版本下载的certbot是不一样的,也许是一个脚本,也许是添加到Ubuntu源下载的一个程序。选择好后,会直接展现给你使用方法。

使用

Ubuntu 16.04 或更新的版本中已经内置了 certbot 包,我这里以 Ubuntu 18.04+Nginx 为例演示,差别仅仅是安装方式不同,

# 安装
sudo add-apt-repository ppa:certbot/certbot
sudo apt install certbot python-certbot-nginx

# 直接运行可以以交互的形式完成证书的获取和安装
sudo certbot --nginx
# 也可以仅获取证书,自己配置Nginx
sudo certbot certonly --nginx

我们还可以使用下面泛域名证书章节内容的方法来获取证书。

自动更新证书

目前Let’Encrypt颁发的证书仅有90天的有效期,在证书到期前需要更新证书,这一过程非常简单,只需要一行命令就可以完成。

sudo certbot renew

新版的certbot已经自动配置了证书更新,会每天检查两次证书是否需要更新。

虽然已经实现了自动更新,但是我们还需要配置一个钩子,在certbot更新证书成功后重新加载Nginx配置,重新加载证书。

# 查看这个timer的内容
sudo systemctl cat certbot.timer

# 新增证书更新成功的回调钩子
sudo vim /etc/letsencrypt/renewal-hooks/deploy/nginx-reload.sh
# 新增下面的内容,然后保存
nginx -s reload
# 增加可执行权限
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/nginx-reload.sh

泛域名证书

Let’s Encrypt在2018年3月份正式支持了泛域名证书,我也很快就试用了这个功能,虽然目前对于我意义并不大。使用方式也很简单,并且需要 certbot 版本大于等于 0.22。

使用泛域名证书需要DNS解析两条TXT记录,并且每次更新证书都需要如此操作,但是对于常见的DNS解析商都有对应的插件来自动的设定DNS记录,免去手动设定的麻烦,例如certbot-dns-cloudflare 对应Cloudflare。

展示成果:

选项与参数(高级用户)

按照上列方法已经可以满足大多数人的需求了,当你有强烈的控制欲望和一定动手能力,可以了解一些cretbot的高级选项。

sudo certbot certonly

certonly顾名思义,“cert only”就是只要证书,命令中添加certonly参数可以让certbot不修改你的Apache2的配置,只会生成证书。

sudo certbot renew --dry-run

--dry-run命令的作用在于测试是否可以正常运行,如果你刚刚安装完证书,并添加了自动更新任务,却担心到时间后能否正常运行,可以使用上面的命令进行测试。

发表评论

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