Ssl Nginx不考虑续租';s加密证书
我有一台服务器在内部端口上运行一些NodeJs应用程序(确切地说是MeteorJs)。我使用Nginx来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
代理传递
针对应用程序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天内过期。如果到期,它将自动续订