Let's Encrypt申请安装SSL证书及续期注意事项

Let's Encrypt申请ssl证书可以使用certbot-auto脚本,也可以使用certbot手动安装,以nginx centos环境安装为例说明ssl证书安装过程。

certbot-auto安装脚本

Let's Encrypt提供多种安装方式,推荐使用Let's Encrypt自动安装脚本,下载脚本:

$ wget https://dl.eff.org/certbot-auto

给脚本添加执行权限

$ chmod a+x ./certbot-auto

若要检查脚本是否被篡改,使用如下命令:

$ wget -N https://dl.eff.org/certbot-auto.asc
$ gpg2 --recv-key A2CFB51FA275A7286234E7B24D17C995CD9775F2
$ gpg2 --trusted-key 4D17C995CD9775F2 --verify certbot-auto.asc certbot-auto 

开放ssl防火墙端口

CentOS7 firewall-cmd添加端口为例:

firewall-cmd --add-port=443/tcp --permanent

重新加载防火墙配置:

firewall-cmd --reload

 安装ssl证书

./certbot-auto --nginx

首次安装Let's Encrypt ssl证书 ,提示填写邮箱,证书到期前将收到邮件提醒。

询问是否同意Let's Encrypt的协议,

[A]同意即可。

随后列出nginx配置文件(*.conf)中出现的所有域名,输入域名对应的序号或输入空格(全选),回车进入下一步。

说明:若未能列出nginx中配置的域名,多因手动编译安装nginx导致,npm方式安装的nginx未出现此类问题。

询问是否对http请求执行重定向:(1)不跳转,(2)跳转。

当出现 Congratulations! 字样时,说明Let's Encrypt已经成功颁发SSL证书。

自动续期

Let's Encrypt ssl证书有效期90天,添加自动续期的定时任务

./certbot-auto renew  --quiet  --dry-run --nginx

脚本在执行前会对自身版本执行检测,网络问题会导致续期失败,可选择禁用更新检测:

/root/certbot-auto renew --quiet --dry-run --nginx  --no-self-upgrade

注:--quiet为静默执行。

定时任务

sudo crontab -e

任务时间

15 3 * * * /root/certbot-auto renew --quiet --dry-run --nginx  --no-self-upgrade

wq保存定时任务。

说明:示例中定时任务在每日凌晨3:15运行certbot renew命令检测证书有效性。

SSL证书安全测评

sslabs提供SSL证书可靠性检测,如下所示:

https://www.ssllabs.com/ssltest/analyze.html?d=xieyonghui.com