Let’s Encrypt 证书申请使用

certbot 是免费证书,但申请一次有效期只有3个月:

先安装 certbot

1
2
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

###申请证书(注意:需要把要申请证书的域名先解析到这台服务器上,才能申请):

1
sudo ./certbot-auto certonly --standalone --email admin@abc.com -d test.com -d www.test.com

执行上面指令,按提示操作。

Certbot 会启动一个临时服务器来完成验证(会占用 80 端口或 443 端口,因此需要暂时关闭 Web 服务器),然后 Certbot 会把证书以文件的形式保存,包括完整的证书链文件和私钥文件。

文件保存在 /etc/letsencrypt/live/ 下面的域名目录下。

修改 nginx 配置:

1
2
3
4
5
6
7
8
server{
listen 443 ssl http2; // 这里还启用了 http/2.0

ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem; # 证书文件地址
ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem; # 私钥文件地址

server_name test.com www.test.com; // 证书绑定的域名
}

证书自动续期

证书有效期是 3 个月,把下面命令加到 crontab,每2个月执行一次:

1
certbot-auto renew //刷新指令

自动读取nginx配置申请证书

certbot-auto –nginx 会自动读取 nginx 的配置,按提示申请证书。

下面命令会自动创建定时任务

1
certbot-auto renew --dry-run

不重启申请证书

修改 nginx 配置,增加:

1
2
3
4
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /usr/share/nginx/html;
}

重启 nginx,执行:

1
certbot-auto certonly --webroot -w /usr/share/nginx/html/ -d www.test.com