Nginx 配置 Let’s Encrypt TLS 证书

作者: boris 分类: 技术文章 发布时间: 2017-09-12 18:16

Nginx plugin 用于为 Nginx 服务器自动获取和安装证书,仍然处在实验阶段,并且 letsencrypt-auto 没有安装这个 plugin,如需使用,运行 pip install letsencrypt-nginx 进行安装后,通过 --nginx 参数调用 plugin。

证书位置

所有版本已申请的证书放在 /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 !

申请频率限制

  • 注册IP限制:每IP每3个小时不超过10次
  • 域名数量限制:每个域名(包含子域名)每7天不超过5个

安装实践

系统环境

  • Ubuntu 14.04.3 LTS x86_64
  • Nginx 1.9.3
  • Python 2.7.6
  • www.saxieyu.com

获取证书

由于 www.saxieyu.com 的 nginx 已在运行中,故使用 webroot 模式来获取证书,使用命令:

$ ./letsencrypt-auto certonly --webroot --webroot-path /usr/share/nginx/html -d www.saxieyu.com --agree-tos --email admin@saxieyu.com

证书申请成功后会提示证书的文件路径,以及证书到期时间:

IMPORTANT NOTES:

- Congratulations! Your certificate and chain have been saved at

/etc/letsencrypt/live/www.saxieyu.com/fullchain.pem. Your cert will

expire on 2016-04-01. To obtain a new version of the certificate in

the future, simply run Let's Encrypt again.

- If you like Let's Encrypt, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:  https://letsencrypt.org/donate

Donating to EFF:                    https://eff.org/donate-le

配置Nginx

生成2048位 DH parameters:

$ sudo openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048

接下来,修改 nginx 配置文件:

server {

    listen 443 ssl;

    server_name www.morong.me;

    ssl_certificate /etc/letsencrypt/live/www.saxieyu.com/fullchain.pem;

    ssl_certificate_key /etc/letsencrypt/live/www.saxieyu.com/privkey.pem;

    ssl_dhparam /etc/ssl/certs/dhparams.pem;

    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!3DES:!MD5:!ADH:!RC4:!DH:!DHE;

    ssl_prefer_server_ciphers  on;

    ……

}

配置 http 强制跳转到 https:

server {

    listen 80;

    server_name www.morong.me;

    return 301 https://$server_name$request_uri;

}

验证服务器证书

如上修改过 nginx 配置,并 reload 过 nginx 服务后,使用浏览器访问 https://www.morong.me,验证服务器证书是否正确生效

作者:saxieyu
链接:http://www.jianshu.com/p/eaac0d082ba2
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发表评论

电子邮件地址不会被公开。 必填项已用*标注