docker https 证书/多域名通配符自动续期(群晖https证书)
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker https 证书/多域名通配符自动续期(群晖https证书)相关的知识,希望对你有一定的参考价值。
本文基于 freessl.cn 申请通配符域名自动续期。
使用docker的原因是为了方便可靠,不会因为不同的操作系统缺包无法安装 acme.sh,也不会在操作系统中留下灿烂内容,acme 版的docker 包含了运行环境。
主要步骤如下:
1、打开 https://freessl.cn/
官网,注册并登录
2、进入 ACME自动化 导航菜单,添加证书
3、配置域名解析
4、域名解析配置检测通过后,获得签发证书的命令
5、运行带有 acme.sh 运行环境的 docker 容器
docker run -itd \\
-v "/opt/acme.sh":/acme.sh \\
--net=host \\
--restart=always \\
--name=acme \\
neilpang/acme.sh \\
daemon
其中
/opt/acme.sh
为本地挂载目录,在初次生成证书后,里面会生成证书配置信息和证书文件。
6、运行脚本生成证书
docker exec acme \\
acme.sh --issue \\
-d demo.com -d *.demo.com \\
--dns dns_dp \\
--server https://acme.freessl.cn/v2/DV90/directory/xxxxxxxxxxxxxxxxxxxx
这个脚本可以重复执行,如果没有到下次自动续期的时间,它会输出日志提示你。如果需要强制重新生成和签发证书,添加
--force
参数即可。
7、配置自动续期定时任务
将上面的脚本原封不动的配置到系统的定时任务中,可以设置为每周执行一次。
附上 acme.sh 容器的官方连接:https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker
至此结束,以上内容适合所有可以运行 docker 容器的 Linux 平台。
8、群晖补充篇
官方的 acme.sh 对群晖证书替换做了支持,通过追加参数 --deploy-hook synology_dsm
来实现。
这个 hook 的原理就是调用了群晖的 API 来发布证书,因为需要调用 API 需要群晖账号密码的支持,所以要先修改容器添加环境变量参数。
参数 | 说明 |
---|---|
SYNO_DID | 填入获取的 DID (没有设置两步验证的忽略),点击查看获取方法 |
SYNO_Port | 填入群晖内网的端口号(默认端口5000可以不提供) |
SYNO_Username | 登录群晖的用户名 |
SYNO_Password | 登录群晖的密码 |
SYNO_Certificate | 要添加的证书的名字,空字符串(“”)为替换默认证书 |
SYNO_Create | 当 SYNO_Certificate 不为(“”)时,需要设置自动创建的证书名 (仅替换证书的可以不设置,第一次设置证书可能会用到) |
运行容器的示例:
docker run -itd \\
-v "/opt/acme.sh":/acme.sh \\
-e SYNO_Username="demo" \\
-e SYNO_Password="demo123" \\
-e SYNO_Certificate="" \\
--net=host \\
--restart=always \\
--name=acme \\
neilpang/acme.sh \\
daemon
然后再群晖的定时执行计划中添加任务,如下:
docker exec acme \\
acme.sh --issue \\
-d demo.com -d *.demo.com \\
--dns dns_dp \\
--server https://acme.freessl.cn/v2/DV90/directory/xxxxxxxxxxxxxxxxxxxx \\
--deploy --deploy-hook synology_dsm
--deploy
表示需要部署证书到server,--deploy-hook
指定部署到的目标,exec 后面的 acme 是容器的名称。
网上很多帖子是将云平台的账号密码都配置在容器参数中,可以全自动化申请证书,个人不太推荐。虽然这样省去了配置DNS的步骤(这个DNS解析第一次配置一次就行了以后续期也不需要),但是这步省的意义不大且带来了账号信息泄露的风险。更多的时候,域名管理者可以配置一个DNS验证但是他可能更不希望提供账号密码。
(END)
以上是关于docker https 证书/多域名通配符自动续期(群晖https证书)的主要内容,如果未能解决你的问题,请参考以下文章