CentOS 服务器使用 Certbot 安装配置 Let’s Encrypt SSL证书


lets-encrypt

Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。

申请 Let's Encript 证书主要有以下三种方式:

这里我们以 Certbot 脚本的方式为例,介绍 CentOS 下 Nginx 安装配置 Let's Encrypt 的过程。

安装 Certbot

sudo yum install certbot

自动安装配置

执行:

sudo certbot --nginx

Certbot 会查找当前服务器上的 Nginx 里面的虚拟主机,为你签发 SSL 证书,并且会自动修改主机的 Nginx 配置,让它支持 HTTPS,根据提示一步一步操作即可。

手动安装配置

申请证书

# 使用方法:certbot certonly --webroot -w [Web站点目录] -d [站点域名] -m [联系人email地址] --agree-tos
# 例如:
certbot certonly --webroot -w /opt/www/mydomain.com -d mydomain.com -m myname@gmail.com --agree-tos

完成后,在 /etc/letsencrypt/live/ 会生成对应域名的文件夹,里面有指向证书的快捷方式。

配置 SSL 证书

server {
 server_name mydomain.com;
 listen 443;
 ssl on;
 ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
 ...

自动更新证书

Let's Encrypt 证书只有 90 天有效期,我们可以通过 cron 定期自动更新证书,(如果系统未安装 cronie,需先安装)执行:

crontab -e

如果我们希望每周一凌晨 2:30 自动执行证书更新操作,并自动重启nginx服务,添加一行:

30 2 * * 1 sudo /usr/bin/certbot renew --quiet && sudo /usr/bin/systemctl reload nginx

证书在到期前30天内才能更新,多余的更新会自动忽略掉的。