17

Certbot 和 nginx 版本:

certbot 使用certbot.eff.org安装指南安装。

  • 证书机器人版本:0.22.2
  • Nginx 版本:1.10.3

获取 ssl 证书工作正常:

certbot --nginx

但是,在更新 cerbot 认证时

certbot renew --dry-run

nginx无法启动导致:

nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)

我试过改变后钩和前钩/etc/letsencrypt/renewal/*com.conf/

  • 评论installer=nginx
  • 将身份验证器更改为 nginx 和独立

添加 post 和 pre 钩子/etc/letsencrypt/renewal-hooks/pre//etc/lestencrypt/renewal-hooks/post/停止和启动 nginx 服务。

似乎 nginx 没有正确启动或没有正确停止。续订完成后,nginx 失败并显示 (code=exited, status=1/FAILURE)

Nginx 错误日志显示:

nginx 日志图像

certbot 更新时出错: Certbot 错误登录续订

4

3 回答 3

13

尝试执行:

sudo service nginx restart

然后测试你的 nginx 配置文件(直到你看到“ nginx: configuration file /etc/nginx/nginx.conf test is successful ”)

sudo nginx -s reload -t

注意证书的路径和其他东西

然后重新加载不带-t选项的配置:

sudo nginx -s reload

不建议在其中修改配置文件,/etc/letsencrypt/但在此处创建(如果不存在)和修改cli.ini文件对我有用。您可以post-hook在此文件中指定一次,它将适用于您的所有证书,请参阅我当前的文件:

# /etc/letsencrypt/cli.ini
max-log-backups = 0
authenticator = webroot
webroot-path = /var/www/html
post-hook = service nginx reload
text = True

我希望这将有助于未来的读者。解决方案来源在这里 (但是文章是俄语的)

于 2019-11-23T06:42:15.007 回答
4

我在 Ubuntu 16.04 上遇到了同样的问题

我刚刚删除了 post 和 pre 挂钩/etc/letsencrypt/renewal/*.conf并将验证器更改为nginx- 我在两个条目中拥有standalone

它现在工作正常。

编辑:

更新续订配置的推荐方法是使用以下方法重新颁发新证书:

certbot -i nginx -d example.com -d www.example.com certonly

于 2018-07-12T09:43:45.813 回答
0

我有同样的错误......

当我安装 certbot 时,我按照说明输入了一个 cronjob (5 3 15 * *):

certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

今天早上nginx死了,日志显示

open() "/run/nginx.pid" failed (2: No such file or directory)

我没有把两者联系起来,但是我明白certbot触发了nginx失败吗?

于 2021-03-15T17:37:55.823 回答