起因
网上关于acme.sh注册的证书的更新机制没有太多的讨论,为此吃了不少苦头,踩了不少坑。总结出了一些自己的心得,便在这里提几句。
正文
1· acme.sh的更新时间
可以通过代码
acme.sh --list
查看achme.sh保存的证书,证书生成的日期及其更新日期
可以看出,acme.sh默认将在证书剩余1个月的时候进行自动更新
2· acme.sh的更新方式
acme.sh会保存你的证书的注册方式,当一个证书剩余1个月时,acme.sh将自动尝试更新你的证书,如果你在注册完证书后,使用了 --installcert
函数,那么acme.sh也会在更新完证书后运行 --installcert
的内容。
下面举个使用 acme.sh --installcert
函数的栗子🌰:
acme.sh --ecc --installcert -d example.com.one \
--key-file /usr/local/nginx/conf/ssl/example.com.key \
--fullchain-file /usr/local/nginx/conf/ssl/example.com.cer \
--reloadcmd "lnmp nginx reload"
如果你配置好的 --installcert
函数需要改动,你可以将修改后的 --installcert
命令重新在终端运行一遍,acme.sh会自动将新的命令保存并用于下一次的更新。。
--installcert
函数是使用acme.sh非常好用的函数,配置好能让acme.sh自动更新证书,无需你自己reload NGINX,做到完全的自动化更新,减轻你的工作量。
acme.sh会保存注册时的注册方式、参数及--installcert
的内容,也就是说,你应该一开始使用acme.sh时便需要好好规划证书的位置及其安装方式,如果你是使用--standalone
函数进行注册的,那么在往后更新时,acme.sh会与NGINX冲突进而无法正常更新证书
3· 如何强制更新证书
正确的利用强制更新证书的功能,可以让你很好的判断你acme.sh的配置是否正确:
acme.sh (--ecc) --renew -d example.com --force
又或者你想要全部证书都强制更新:
acme.sh --cron -f
强制执行更新任务无需任何操作,acme.sh便会尝试将你的证书全部进行更新
4· 如何删除证书
当你的证书已经无需使用时,建议把它从你的acme.sh中删掉,查看 acme.sh --list
时会舒服很多🤣
删除证书:
acme.sh (--ecc) --remove -d <SAN_Domains>
Comments | NOTHING