使用 Docker + acme.sh 自动自动更新 HTTPS 证书

参考链接

使用步骤

证书目录创建

创建 /data/acme 目录

1
mkdir -p /data/acme

acme.sh 环境准备

此处使用 DNS Pod API,将 SOME_DP_IdSOME_DP_Key 替换为实际值后运行下方命令启动 container.acme 容器;使用 DNS 服务商可以参考 《How to use DNS API》

1
2
3
4
5
6
7
8
9
DP_Id=SOME_DP_Id
DP_Key=SOME_DP_Key

docker run -itd --restart=unless-stopped \
--name="container.acme" \
-v /data/acme:/acme.sh \
-e "DP_Id=${DP_Id}" \
-e "DP_Key=${DP_Key}" \
neilpang/acme.sh daemon

申请证书

1
2
3
# 将 example.com 替换为实际值
DOMAIN="example.com"
docker exec -it container.acme acme.sh --issue --dns dns_dp -d "${DOMAIN}" -d "*.${DOMAIN}" --force --server letsencrypt.org

成功签发后,/data/acme 目录下会产生 example.com 目录

Nginx 配置参考

1
2
3
4
5
6
7
8
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /data/acme/example.com/fullchain.cer;
ssl_certificate_key /data/acme/example.com/example.com.key;

…………
}