快速申请 Let's Encrypt 证书
通过 docker 镜像 quay.io/letsencrypt/letsencrypt 可以十分方便快捷地申请 Let's Encrypt 证书。
申请前需要确保申请证书的域名已经解析到这台服务器,并且服务器的 80、443 端口没有被占用,如果有占用,可暂停相关服务直到申请完成。
# 证书申请
docker run --rm -p 80:80 -p 443:443 -v /etc/letsencrypt:/etc/letsencrypt \
quay.io/letsencrypt/letsencrypt auth \
--standalone -m xxx@qq.com --agree-tos -d domain1.com -d domain2.com
1
2
3
2
3
执行完毕后,证书会存放在 /etc/letsencrypt 目录下。
# 证书续期
注意
Let's Encrypt 证书有效期3个月,剩余有效期不足1个月时可续期,续期后重新获得3个月有效期。
docker run --rm -p 80:80 -p 443:443 -v /etc/letsencrypt:/etc/letsencrypt \
quay.io/letsencrypt/letsencrypt renew \
--standalone
1
2
3
2
3
执行后,会自动续期 /etc/letsencrypt 目录下的证书。只有满足续期条件的证书才会续期,不满足的会忽略。
可编写定时任务每月自动执行续期命令。
# 证书部署
如果 nginx 也是在容器中运行,需要确保 /etc/letsencrypt 目录已经映射到容器内。
以下是一个 nginx 反向代理站点部署证书的示例
server {
listen 443 ssl;
server_name domain1.com;
# ssl配置
ssl_certificate /etc/letsencrypt/domain1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/domain1.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
location / {
proxy_pass http://172.17.0.1:3000;
}
}
# http 重定向到 https
server {
listen 80;
server_name domain1.com;
return 301 https://$host$request_uri;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
上次更新: 2022/08/09, 18:02:37