前言
Let’s Encrypt 是由非盈利性互联网安全研究小组(ISRG)提供的免费的自动化和开放的证书颁发机构。目前各浏览器支持度比较好,可信度较高。
Let’s Encrypt 官方推荐使用 Certbot ACME 客户端来完成 HTTPS 的部署,其它语言或者环境(包括 Bash、Browser、C、Docker、Go、java、Nginx、Node.js、PHP、Perl、Python、Ruby 等等)可以查看 ACME 第三方客户端列表
我的系统环境是 Centos7、Nginx。经过调试后,最后成功的方法是 Certbot 的 certbot-auto。
下载客户端
wget https://dl.eff.org/certbot-auto
chmod a + x ./certbot-auto
chmod +x ./certbot-auto
证书生成
./certbot-auto certonly --agree-tos -m 邮箱地址 --webroot -w 域名的根目录 -d 带 www 你的域名 -d 不带 www 你的域名
- 域名指向的根目录下生成 .well-known 目录
- 生成 /etc/letsencrypt 目录,pem 文件存在于 /etc/letsencrypt/live/www.你的域名 目录下
Nginx 的关键修改
443 端口
ssl on;
ssl_certificate /etc/letsencrypt/live/www.你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.你的域名/privkey.pem;
对于 http 的 80 端口访问,不推荐携带参数重定向到 https,建议直接返回错误或者不携带参数的返回到 https 首页。
证书续期
证书的有效期是三个月,所以需要进行一下续期。我使用计划任务 crontab
,每个月执行 certbot-auto renew
。