CentOS 下 Nginx 部署免费SSL安全证书 Let's Encrypt (certbot)

关于Let’s Encrypt

Let’s Encrypt 是一个免费、开放,自动化的证书颁发机构,由 ISRG(Internet Security Research Group)运作。

兼容性: Let’s Encrypt 已经得了 IdenTrust 的交叉签名,这意味着其证书现在已经可以被所有主流的浏览器所信任,包括从IE6-IE11,其它现代浏览器更没话说,100%放心使用。

申请频率限制

注册IP限制:每IP每3个小时不超过10次

域名数量限制:每个域名(包含子域名)每7天不超过5个

证书位置

所有版本已申请的证书放在 /etc/letsencrypt/archive下,/etc/letsencrypt/live是指向最新版本的符号链接。web server中关于证书的配置建议指向 live 目录下的文件,以免证书更新后还需要更改配置。

每个域名一个目录,主要包含以下几个文件:

  • cert.pem 申请的服务器证书文件
  • privkey.pem 服务器证书对应的私钥
  • chain.pem 除服务器证书外,浏览器解析所需的其他全部证书,比如根证书和中间证书
  • fullchain.pem 包含服务器证书的全部证书链文件

证书更新

Let’s Encrypt 颁发的服务器证书有效期为90天,官方表示此为出于安全原因,降低错发证书,证书泄漏的危害。通过自动续期来解决有效期短的问题,官方建议每2个月更新证书。

如果到期没有更新证书,CA会向申请证书时提交的邮件地址发送提醒email。

自动续期可以使用 crontab 实现。注意更新证书后重启 web server !

生成证书

通过官方提供的certbot工具生成证书

安装 certbot

使用yum安装

1
yum -y install certbot

如果安装不成功,可以用git克隆certbot源码来执行

1
2
git clone https://github.com/certbot/certbot
cd certbot

安装证书有多种方式,我们用绑定证书到站点目录的方式安装,这样更新证书时不需要停止nginx。

1
certbot certonly --webroot -w /path/to/webroot/  -d coderpan.com -d www.coderpan.com --email cmpan@qq.com

/path/to/webroot/ 为站点根目录,配置时域名必须是可访问的。

1
2
3
4
5
6
7
8
9
# 监听443端口
listen 443 default ssl;

# 启用 ssl
ssl on;
ssl_certificate /etc/letsencrypt/live/coderpan.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/coderpan.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv3;
ssl_prefer_server_ciphers on;

常见问题

1)IE6打不开
ssl_protocols 增加SSLv3参数即可,IE6的安全设置中默认不勾选 TLS 协议。

2)第一次执行letsencrypt-auto需要安装需要的关联包,需要等待的时间比较长,甚至更新系统关联包后执行脚本不成功,再执行一次就行。

3)免费版本不支持通授权域名使用通配符

1
2
# 不支持使用 * 通配符
-d *.coderpan.com

CentOS 下 Nginx 部署免费SSL安全证书 Let's Encrypt (certbot)

https://coderpan.com/tools/nginx-ssl-lets-encrypt.html

作者

CoderPan

发布于

2023-01-20

更新于

2024-07-18

许可协议

评论