使用Certbot申请Let's Encrypt SSL证书

posts/%E4%BD%BF%E7%94%A8certbot%E7%94%B3%E8%AF%B7lets-encrypt-ssl%E8%AF%81%E4%B9%A6

安装 CertBot

对于Debian发行版可使用apt直接进行安装 $ sudo apt install certbot

申请证书

Standalone

这种方式个人认为申请方便且速度最快,当服务器没有开启 Apache、Nginx 这类程序使用 80 或 443 端口时可以使用。

比如要对example.comone.example.comtwo.example.com三个域名申请证书则需要使用

$ sudo certbot certonly --standalone -d example.com -d one.example.com -d two.example.com

对于*.example.com泛域名输入该方法会失效 更推荐采用 DNS-Challenge 方式

Webroot

如果你已经有了 Nginx 服务器且正在运行则可以采用这种方式

-w参数后接网站文件夹目录

$ sudo certbot certonly --webroot -w /var/www/example -d example.com -d one.example.com -d two.example.com

DNS-Challenge

对于*.example.com泛域名可采用 DNS-Challenge

$ sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

后会提供一个 DNS Record 需要设置到你的域名上完成认证大概 DNS 更新需要一小时时间。

证书保存位置

申请成功后证书会保存在/etc/letsencrypt/live/example.com/下,安全起见其权限设定为一般用户不可访问

自动续签

由于Let's Encrypt SSL证书有效期为 3 个月所以我们需要定期对证书进行更新

这里采用 crontab 周期性自动执行命令

sudo crontab -e加命令

a编辑添加下面命令每两个月 1 日 0 点 0 分申请证书

0 0 1 */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

wq保存

可通过crontab -l查看计划是否添加成功