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 | git clone https://github.com/certbot/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 | # 监听443端口 |
常见问题
1)IE6打不开
ssl_protocols 增加SSLv3参数即可,IE6的安全设置中默认不勾选 TLS 协议。
2)第一次执行letsencrypt-auto需要安装需要的关联包,需要等待的时间比较长,甚至更新系统关联包后执行脚本不成功,再执行一次就行。
3)免费版本不支持通授权域名使用通配符
1 | # 不支持使用 * 通配符 |
CentOS 下 Nginx 部署免费SSL安全证书 Let's Encrypt (certbot)