Nginx 启动失败 ssl no such file or directory

tgo*_*oza 21 debian nginx web-server

这是我得到的错误:

重新加载 nginx 配置:nginx: [emerg] SSL_CTX_use_certificate_chain_file("/path/to/cert.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory error:20074002:BIOroutines:FILE_CTRL:system lib 错误:140DC002:SSL 例程:SSL_CTX_use_certificate_chain_file:system lib) nginx: 配置文件 /etc/nginx/nginx.conf 测试失败

我 100% 确定该文件在该位置,但 Nginx 似乎认为它不存在。我按照这个顺序手动合并了domain.crtintermediate.crt。我一整天都在为这个问题挠头。我希望有人已经看到了这个错误并有一个解决方案。(附带说明,在粘贴文件位置只显示一次而不是在“没有这样的文件或目录”之后再次显示时,这不是错误)。

Jim*_*hus 19

您确定 Nginx 用户可以访问该目录吗?

还要检查.pem文件的权限,如果 Nginx 无法访问它,它可以显示为'no such file or directory'.

如果权限正确,您可以再次检查实际路径。你是如何粘贴它的(我知道你删除了目录)没有开始/可能是问题所在。

编辑

尝试将您的 SSL 设置移动到以下结构中(以及更改nginx.conf以反映):

sudo mkdir /etc/nginx/ssl
sudo chown -R root:root /etc/nginx/ssl
sudo chmod -R 600 /etc/nginx/ssl
Run Code Online (Sandbox Code Playgroud)

Nginx 可能会.pem因为权限太开放而失败(需要源代码来验证 Nginx 是否这样做),但上述设置应该可以正常工作。


小智 6

我会留下我的问题的答案,以防有人遇到这个话题。

我在 docker 容器内运行 nginx,并在尝试访问私钥文件时遇到相同的错误。挠头几个小时后,我意识到我的 docker 的 nginx 没有包含我的数据的挂载卷。

添加挂载卷的唯一选项是使用以下选项删除并重新创建容器-vhttps ://docs.docker.com/engine/tutorials/dockervolumes/

docker run -d -P --name docker-nginx -v /etc/ssl/certs:/etc/ssl/certs nginx
Run Code Online (Sandbox Code Playgroud)

有时候,琐碎的事情很难看清。希望这有帮助。