ElasticBeanstalk 上的 Node.js 应用程序无法访问服务器上的私钥文件

ElasticBeanstalk 上的 Node.js 应用程序无法访问服务器上的私钥文件

我有一个在 ElasticBeanstalk 上运行的 node.js 应用程序。其配置的一部分是 .p12 密钥文件的路径。当应用程序尝试使用密钥文件时,会引发权限被拒绝异常。

我的问题是,我是否将密钥文件放在具有正确权限的最佳位置,或者是否应该使用其他地方或权限。

该应用程序是一个解析服务器示例克隆安装到 EB 服务器上的 /var/app/current。我已将密钥文件放在 /home/ec2-user/.ssh 中。我尝试将密钥文件的权限设置为 400、644 甚至 777。.ssh 目录本身的权限为 700。我看到的错误是:

parse-server-example 在端口 8081 上运行。/var/app/current/node_modules/parse-server/lib/ParseServer.js:339 抛出错误;^

错误:EACCES:权限被拒绝,在错误处打开‘/home/ec2-user/.ssh/key.p12’(本机)

答案1

我在尝试安装/运行 etherpad 时也遇到了这个问题

事实证明,这与文件的权限无关,而是与上级目录的权限有关

如果我以 root 身份执行此操作,我会得到:

ls -l /etc/letsencrypt/live/domain/privkey.pem
lrwxrwxrwx 1 root root 42 May 20 13:03 /etc/letsencrypt/live/domain/privkey.pem -> ../../archive/domain/privkey1.pem

但是如果我运行相同的命令,就会etherpad收到权限被拒绝的情况。

ls -ld对每个目录执行up 操作都显示live具有权限rwx------,即无法读取或列出该目录。

chmod 755 /etc/letsencrypt/live /etc/letsencrypt/archive

就我的情况而言,这解决了这个问题。您的情况可能会有所不同。

答案2

最终对我而言有效的是为 .p12 密钥创建一个目录,并将该目录和密钥的所有权授予 nodejs 用户。

sudo mkdir -p /etc/foo
sudo chown nodejs /etc/foo
sudo chmod 700 /etc/foo

sudo cp my_key.p12 /etc/foo

sudo chown nodejs /etc/foo/my_key.p12
sudo chmod 600 /etc/foo/my_key.p12

相关内容