启动 Phoenix 生产服务器时 SSL 证书文件的 EACCESS 权限被拒绝

问题描述 投票:0回答:1

我已在我的 Phoenix 应用程序中添加了一些新的 Let's Encrypt SSL 证书,如此处指南中所述:https://phoenixframework.readme.io/docs/configuration-for-ssl

当我尝试在生产模式下启动服务器时,出现以下错误:

23:04:11.573 [info] Running MyAppWeb.Endpoint with Cowboy using http://:::4000
23:04:11.652 [error] Failed to start Ranch listener MyAppWeb.Endpoint.HTTPS in :ranch_ssl:listen([certfile: '/Users/FJ/projects/elixir/my_app/_build/prod/lib/my_app/priv/ssl/cert.crt', keyfile: '/Users/FJ/projects/elixir/my_app/_build/prod/lib/my_app/priv/ssl/priv.key', port: 443]) for reason :eacces (permission denied)

我不明白为什么会发生这种情况,因为我已经授予了文件几乎所有可能的读取权限:

ls -la priv/ssl/
total 16
drwxr-xr-x  4 FJ  staff   128 Apr 25 23:09 ./
drwxr-xr-x  9 FJ  staff   288 Apr 25 23:09 ../
-rw-r--r--  1 FJ  staff  1708 Apr 25 23:02 cert.crt
-rw-r--r--  1 FJ  staff  1708 Apr 25 23:03 priv.key

我在本地使用MacOS,但在我的生产环境(Alpine Linux)中我遇到了同样的错误。

这是生产端点配置的 SSL 部分:

  https: [port: 443,
        otp_app: :my_app,
        keyfile: "priv/ssl/priv.key",
        certfile: "priv/ssl/cert.crt"
        ]
ssl https elixir phoenix-framework lets-encrypt
1个回答
0
投票

我有同样的错误,并且使用

sudo MIX_ENV=prod mix phx.server
运行有效。在我的例子中,这似乎是关于在 443 上运行服务器的权限错误,并且有关证书的错误具有误导性。

© www.soinside.com 2019 - 2024. All rights reserved.