ssl - 错误交钥匙 linux confconsole dehydrated .well-known/acme-challenge 404 NOT FOUND
问题描述
使用 RamNode 的交钥匙 Linux 发行版,我注意到我的网站证书已过期,并且 https 链接被标记为“继续”对话框。进一步研究这个问题,Turnkey Linux 使用 confconsole 和 Let's Encrypt 来请求新证书。多个 [virtual] 域要求用户手动使用 cronjob 每天在 /etc/cron.daily/confconsole-dehydrad 下调用的 dehydrad-wrapper,但会导致错误:
/var/log/confconsole/letsencrypt.log
[2019-03-09 05:35:04] dehydrated-wrapper: FATAL: An unexpected service is listening on port 80: nginx:
[2019-03-09 05:35:04] dehydrated-wrapper: WARNING: Something went wrong, restoring original cert & key.
Restarting SSL tunnels: [stopped: /etc/stunnel/stunnel.conf] [Started: /etc/stunnel/stunnel.conf] stunnel.
[2019-03-09 05:35:09] dehydrated-wrapper: WARNING: Check today's previous log entries for details of error.
[2019-03-09 05:35:09] cron: ERROR: dehydrated-wrapper exited with a non-zero exit code.
[2019-03-10 05:35:04] cron: /etc/ssl/private/cert.pem has expired or will do so within 30 days. Attempting renewal.
解决方案:更新 /usr/lib/confconsole/plugins.d/Lets_Encrypt/dehydrad-wrapper
代替:
netstat -ltpn | grep ":80 " | head -1 | cut -d/ -f2 | sed -e 's [[:space:]].*$||'
和:
netstat -ltpn | grep ":80 " | head -1 | cut -d/ -f2 \
| sed -e 's|[[:space:]].*$||; s|[^a-zA-Z0-9]||'
就像在这个提交中一样https://github.com/turnkeylinux/confconsole/commit/d1e61c4767c2148663429d63bc3a42925af8cbcd
然后再次手动运行 cronjob 或等待明天:/etc/cron.daily/confconsole-dehydrad
[2019-03-31 19:26:45] confconsole.hook.sh: SUCCESS: Cert request successful. Writing cert.pem & cert.key for DOMAIN1 to /etc/ssl/private
[2019-03-31 19:26:52] confconsole.hook.sh: SUCCESS: Cert request successful. Writing cert.pem & cert.key for DOMAIN2 to /etc/ssl/private
[2019-03-31 19:26:59] confconsole.hook.sh: SUCCESS: Cert request successful. Writing cert.pem & cert.key for DOMAIN3 to /etc/ssl/private
谢谢你,我希望它可以节省你一些时间
解决方案
我已经在问题帖本身中回答了这个问题,但是,这又是机器人的答案。
解决方案:更新 /usr/lib/confconsole/plugins.d/Lets_Encrypt/dehydrad-wrapper
代替:
netstat -ltpn | grep ":80 " | head -1 | cut -d/ -f2 | sed -e 's [[:space:]].*$||'
和:
netstat -ltpn | grep ":80 " | head -1 | cut -d/ -f2 \
| sed -e 's|[[:space:]].*$||; s|[^a-zA-Z0-9]||'
我可以通过讨论根本问题来进一步扩展解决方案。
因为 dehydrad-wrapper 中的行已将WEBSERVER
变量分配给,所以 dehydrad 在请求和更新证书之前nginx:
无法停止。nginx
添加nginx:
到 case 语句将允许您停止 nginx,但无法启动该nginx:
进程,因为它不存在,以托管该.well-known/acme-challenges
位置,从而在脱水尝试验证 https ssl 证书是否正确配置时导致 404。
推荐阅读
- javascript - 显示跨度错误的 Javascript 验证
- c# - .Net Razor Pages 错误:没有为实体类型“端点”找到合适的构造函数
- python - 在 Flask-SQLAlchemy 模型类中使用数据类装饰器?
- visual-studio - 附加到进程错误:连接到系统的设备无法运行
- wordpress - 是否可以将 SecureAuth 与 Wordfence 插件的 2FA 解决方案一起使用?如果是这样,我该怎么做?
- mysql - docker-compose run mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
- javascript - 将 min 和 max 变量传递给另一个函数
- python - 使用 (n,3) 数组创建散点图,其中 n 是数据集中的数据点数,作为 plt.scatter() 中的“颜色”参数
- python - 如何在 if 条件中合并前一个单元格的值?
- javascript - Javascript阻止Safari中的输入焦点更改