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

我有一个运行在ElasticBeanstalk上的node.js应用程序。 它的一部分configuration是一个.p12密钥文件的path。 当应用程序尝试使用密钥文件时,抛出权限被拒绝的exception。

我的问题是,如果我把密钥文件放在最好的位置,并有正确的权限,或者我应该使用其他地方或权限。

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

运行在端口8081上的parse-server-example。/var/app/current/node_modules/parse-server/lib/ParseServer.js:339 throw err; ^

错误:EACCES:权限被拒绝,在Error(native)处打开“/home/ec2-user/.ssh/key.p12”

当我尝试安装/运行etherpad的时候,我也得到了这个

事实certificate,这不是文件的权限,而是更高级的目录

如果我以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显示live有权限rwx------ ,即该目录既不能被读取也不能被列出。

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

这在我的情况下解决了这个问题。 你的旅费可能会改变。

最终为我工作的是为.p12键创build一个目录,并将目录和密钥的所有权授予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