Nginx 无法找到新证书

Nginx 无法找到新证书

我在 Alpine 上的 Docker 容器中使用 Nginx。使用 Certbot 生成了一个名为 的新证书my.domain.com-0004

mv使用或替换证书cp会导致 SSL 协议错误,并且在日志中 Nginx 无法看到该文件:

2024/04/22 08:41:34 [error] 46#46: *109 cannot load certificate "/etc/letsencrypt/live//fullchain.pem": BIO_new_file() failed (SSL: error:80000002:system library::No such file or directory:calling fopen(/etc/letsencrypt/live//fullchain.pem, r) error:10000080:BIO routines::no such file) while SSL handshaking, client: 34.32.209.4, server: 0.0.0.0:443

替换之前的证书后,一切又开始正常工作。我尝试重新启动容器,但没有成功。

答案1

如果您查看错误消息,您将看到"/etc/letsencrypt/live//fullchain.pem"它尝试加载的文件的名称。/etc/letsencrypt/live/$ssl_server_name/fullchain.pem根据您的cert.conf文件,您的证书位于。对我来说,很明显该变量$ssl_server_name尚未设置,因此返回一个空字符串……因此它找不到您的证书,因为它正在查找的地方没有证书。

答案2

所以我找到了问题所在。该live目录实际上没有文件。这些是softlinks/ symlinks

root@server:/data/certbot/letsencrypt/live/my.domain.com# ls -l fullchain.pem 
lrwxrwxrwx 1 systemd-resolve systemd-journal 49 Apr 21 20:10 fullchain.pem -> ../../archive/my.domain.com-0004/fullchain2.pem

目录中没有-0004目录,因为它被重命名为。将证书从 移动到 后,证书是正确的,新证书开始按预期工作。archive-0003-0003-0004archivelivesymlink

相关内容