Lets Encrypt SSL证书安装 - nginx

以CentOS 7环境为nginx配置Let’sEncrypt SSL证书为例,演示Let’sEncrypt ssl证书安装过程。

安装脚本

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

修改防火墙

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配置文件中出现的所有域名,选择域名对应的序号或输入空格(全选),回车进入下一步。

注:若未出列出域名,多因为手动编译安装nginx,npm方式的安装未出现此类问题。

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

出现 Congratulations! 字样时,说明Let’sEncrypt已经成功为域名颁发了SSL证书。

自动续期

Let’sEncrypt 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命令检测证书有效性。

证书测评

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

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