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证书)的主要内容,如果未能解决你的问题,请参考以下文章

https证书存在错误怎么解决

生成线上用https证书,支持通配符和多域名,初学Let’s Encrypt用于IIS,纯本地手动

中科三方:SSL证书配置过程中常见问题盘点

域名申请https怎么进行?

域名申请https怎么进行?

解读泛域名证书(通配符证书) 如何免费申请