在Apache httpd上更新letsencrypt证书

我正在使用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寻求这个答案的帮助)