我正在尝试在我的Node.js应用上使用HTTPS,就像它已经启用了其他任何东西一样。我已经安装了密钥和证书,但是当我尝试在应用程序上指向它们时,我得到Error: EACCES, permission denied
。
密钥和证书都在/etc/pki/tls
的子文件夹中,我试图像这样指向它们:
var privateKey = fs.readFileSync('/etc/pki/tls/private/serverKey.key').toString(),
certificate = fs.readFileSync('/etc/pki/tls/certs/2_mikewarren.me.crt').toString();
var options = {
key: privateKey,
cert: certificate
}
我是否需要调整密钥和证书的权限(通过chown
)?如果是的话,这样做是否安全?
答案 0 :(得分:4)
我获得了代码访问权。
我做了什么
certAccess
certAccess
sudo useradd ec2-user -G certAccess
certAccess
sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key
<强>测试... 强>
要进行测试,我只需在使用后立即将options
打印到控制台即可。实际上,我看到了私钥和证书的内容(自己试试)。我还重新启动httpd
服务器,并请求静态文件。我看到它们,用TLS保护,没有错。
答案 1 :(得分:1)
问题是这些证书只能由root(也许是其他用户)读取。
您可以使用chmod为所有用户提供读取权限,但这意味着...所有用户都可以访问它。所以,不好主意。
另一个解决方案是将chown
这些文件发送给运行node.js的用户,但是如果已经有用户使用这些文件,则会破坏它。在这种情况下,创建一个拥有该文件的新组,为该组授予读取权限,并添加应该访问该组中文件的用户。