我正在使用certbot --webroot插件和certbot renew更新证书,这工作,但它看起来像httpdcaching证书,并不“看到”,它已被更新。
有一个信号为httpd重新加载证书?
PS我宁愿不重新启动httpd以避免宕机。
为了让httpd注意到新的证书,你需要请求它进行“ 平稳重启 ”。 从文档:
USR1或优雅的信号会导致父进程通知孩子在当前请求后退出(或者如果他们没有提供任何服务,立即退出)。 父母重新读取其configuration文件并重新打开其日志文件。 当每个孩子死亡时,父母将其replace为新一代configuration中的孩子,该孩子立即开始提供新的请求。
因为这样的优雅重启不会造成停机。
为了让letsencrypt / certbot触发正常重启,使用–post --post-hook参数。 如果尝试更新证书,此参数将运行一次。 从文档 :
尝试获取/更新证书后,在shell中运行的命令。 可用于部署更新的证书,或重新启动任何由–pre-hook停止的服务器。 这只有在试图获得/更新证书时才会运行。 (默认:无)
所以你想要的命令是
certbot renew --post-hook "apachectl graceful"
或者如果从一个cron作业运行
certbot renew --quiet --post-hook "apachectl graceful"
(感谢@RustyX寻求这个答案的帮助)