现在的网站几乎都要HTTPS,主流浏览器对HTTP网站会显示不安全警告。微信等APP内访API访问更是强制要求HTTPS。免费HTTPS证书有效期只有三个月,如果到期忘记更换证书,将不可访问。使用certbot证书机器人,不仅可以申请免费HTTPS证书,还能自动将证书配置到WEB服务,自动续签。

安装使用

主流Linux软件源都收录了certbot,我用的Debian操作系统,用以下命令安装:

apt install certbot python3-certbot python3-certbot-nginx

安装 python3-certbot-nginx 可以帮我们自动配置到nginx。Ubuntu操作系统安装方式同上。

certbot是从 Let's Encrypt 签名的证书,以下是常用命令:

  • 申请证书
# 如果有多个域名,可以指定多个 -d 参数
certbot --nginx -d www.test.com -d aaa.test.com -d bbb.test.com
# 多个域名也可以用英文逗号隔开
certbot --nginx -d www.test.com,aaa.test.com,bbb.test.com

--nginx 申请证书后自动配置到nginx
-d 申请证书的域名,支持 *.test.com 匹配任意域名

证书存储在 /etc/letsencrypt/live 目录下

  • 查看证书
certbot certificates

返回所有申请的证书

  • 已有证书增加域名
certbot --nginx -d www.test.com,ccc.test.com

如果www.test.com证书已存在。certbot会在该证书中加上ccc.test.com域名

  • 删除证书
certbot delete -d 域名列表

自动续签

查看certbot服务运行状态

systemctl status certbot

注意保证服务在启用中才会自动续签。

证书申请失败

certbot申请证书不成功,注意看返回日志。一般是以下原因引起:

  1. 域名未做解析,或者申请证书的服务器不是域名指向的服务器
  2. 域名未备案,被域名系统拦截
  3. 申请通配符域名,如:*.test.com 。带 * 的域名需要做DNS解析