Acme.sh 自动保存证书文件到其它目录

Acme Sh Auto Save Cert Files

使用 acme.sh 申请的证书,默认是放在 /acme.sh/ 目录下,而这个目录下文件有点多,其实不适合与 nginx 共享。所以我们通常指定一个共享目录来把证书文件再存一下。 而 acme.sh 是可以自动完成这个证书申请后“另存”或者说“安装”的工作的。并且在证书续期之后,也会再次执行。命令如下:

1
2
3
4
5
6
acme.sh --install-cert -d frp.youdomain.com \
--cert-file /acme.sh/certs/frp.youdomain.com/cert.cer \
--key-file /acme.sh/certs/frp.youdomain.com/private.key \
--fullchain-file /acme.sh/certs/frp.youdomain.com/fullchain.cer \
--ca-file /acme.sh/certs/frp.youdomain.com/ca.cer \
--reloadcmd "your_reload_command" # 重启服务的指令,可以不写

如果报文件不存在,可能是因为申请的证书类型是ecc,观察/acme.sh 目录下,你的域名目录后面是否有ecc,有的话需要在上述命令后面再增加--ecc

上述指令是将 frp.youdomain.com 这个域名证书放在 /acme.sh/certs 目录下。 这个目录是挂载宿主机的一个共享目录,同时 nginx 也挂载这个目录,这样在配置证书的时候,就可以读取到这个目录下的证书了。

一般来说,要保持 acme.sh 的单纯和其它镜像的单纯,那么就不会将各种镜像揉在一块儿。所以使用挂载共享目录的形式,和 nginx 共享证书文件,通过以上命令将证书文件放在指定的位置, ache.shnginx 都可以访问到。证书自动更新完,也会放在这里。然后,只需要在宿主机上,增加一个定时任务,reload 一下 nginx 就行了。

例如:

1
docker exec -it nginx nginx -s reload