Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl Nginx不考虑续租';s加密证书_Ssl_Nginx_Renewal - Fatal编程技术网

Ssl Nginx不考虑续租';s加密证书

Ssl Nginx不考虑续租';s加密证书,ssl,nginx,renewal,Ssl,Nginx,Renewal,我有一台服务器在内部端口上运行一些NodeJs应用程序(确切地说是MeteorJs)。我使用Nginx来代理传递针对应用程序URL的请求 假设app_1正在localhost:3000上运行,我会将app1.domain.com代理到localhost:3000,然后添加防火墙规则以限制对端口3000的访问 然后,我使用letsencrypt在app1.domain.com的传入连接上添加SSL。我使用certbot certonly-w/var/www/app1-d app1.domain.c

我有一台服务器在内部端口上运行一些NodeJs应用程序(确切地说是MeteorJs)。我使用Nginx来
代理传递
针对应用程序URL的请求

假设
app_1
正在
localhost:3000
上运行,我会将
app1.domain.com
代理到
localhost:3000
,然后添加防火墙规则以限制对端口3000的访问

然后,我使用letsencrypt在app1.domain.com的传入连接上添加SSL。我使用
certbot certonly-w/var/www/app1-d app1.domain.com
生成证书,然后将nginx配置文件设置为使用它

在更新证书之前,一切都是完美的

要进行续订,我有以下cron工作:

12 6 * * 3 /root/renew.sh
30 6 * * 3 service nginx restart
使用以下脚本
/root/renew.sh

certbot renew 
service nginx reload
我遇到的问题是,在到期时,nginx web服务器不提供新证书

因此,我添加了以下cron作业:

12 6 * * 3 /root/renew.sh
30 6 * * 3 service nginx restart
但它仍然无法刷新证书(这导致导航器出错,称connexion因证书过期而不安全)。所以我需要手动登录并重新加载nginx

我的设置有什么问题


谢谢

经过更多测试,以下是此问题的答案:

将cron作业设置为指向bash脚本:

12 6 * * 3 /root/renew.sh
并将bash脚本设置为:

certbot renew
sleep 1m
service nginx reload

注意
sleep
命令的存在,该命令允许在进行更多测试后等待更新完成

,以下是此问题的答案:

将cron作业设置为指向bash脚本:

12 6 * * 3 /root/renew.sh
并将bash脚本设置为:

certbot renew
sleep 1m
service nginx reload

注意存在
sleep
命令,该命令允许等待更新完成

您可以在一个cronjob行中设置所有内容(修改的基本设置):

此cron作业每天触发两次,以检查证书是否在未来30天内过期。它不应该导致性能问题

如果过期,它将自动悄悄地更新,而不生成输出,并重新启动NGINX以应用更改。如果证书未过期,则不会执行任何操作


请注意,2017年7月发布的certbot版本0.17中添加了deploy hook参数

您可以在一个cronjob行中设置所有内容(修改的基本设置):

此cron作业每天触发两次,以检查证书是否在未来30天内过期。它不应该导致性能问题

如果过期,它将自动悄悄地更新,而不生成输出,并重新启动NGINX以应用更改。如果证书未过期,则不会执行任何操作


请注意,2017年7月发布的certbot版本0.17中添加了部署钩子的参数

,您解决了这个问题吗?我只能认为nginx重新加载是不够的,可能需要停止-启动。除此之外,使用MeteorUp:?它使用docker并内置了Lets Encrypt。我还没有解决这个问题,我需要花时间深入研究cron作业日志。。。我确认在手动重新加载时,重新加载足以考虑新证书。MeteorUp在我的情况下不是一个选项,但我会看看他们如何更新证书。我刚刚想到的另一件事是cron作业可能需要以root/sudo用户身份运行。你解决了这个问题吗?我只能认为nginx重新加载是不够的,可能需要停止-启动。除此之外,使用MeteorUp:?它使用docker并内置了Lets Encrypt。我还没有解决这个问题,我需要花时间深入研究cron作业日志。。。我确认在手动重新加载时,重新加载足以考虑新证书。MeteorUp在我的例子中不是一个选项,但我会看看他们如何更新证书。我刚刚想到的另一件事是cron作业可能需要以root/sudo用户的身份运行。谢谢你的回答,我想我的回答中缺少了--deploy钩子。你能解释一下crontab行的开头吗?(从“root”到“certbot”)我不明白它的功能。谢谢,这是安装“Certbot”时自动设置的基本crontab,基本上它检查证书是否在未来30天内过期。如果它即将过期,那么它将自动更新它。感谢您的回答,我想我的回答中缺少了--deploy钩子。你能解释一下crontab行的开头吗?(从“root”到“certbot”)我不明白它的功能。谢谢,这是安装“Certbot”时自动设置的基本crontab,基本上它检查证书是否在未来30天内过期。如果到期,它将自动续订