给Node.js访问证书/私钥
我正在尝试在我的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
)? 如果是这样,是否安全?
问题是这些证书只能由root(也可能是其他用户)读取。
您可以使用chmod为所有用户提供读访问权限,但这意味着所有用户都可以访问它。 所以,糟糕的主意。
另一个解决scheme是将这些文件分配给运行node.js的用户,但是如果已经有一个用户使用这些文件的应用程序,则会将其分解。 在这种情况下,创build一个拥有该文件的新组,为该组授予读取权限,并添加应该访问该组中文件的用户。
我有我的代码访问。
我做了什么
- 创build了一个名为
certAccess
新用户组 - 通过说
sudo useradd ec2-user -G certAccess
将自己添加到sudo useradd ec2-user -G certAccess
- 向
certAccess
添加了root用户(谁是访问这些文件的唯一用户) - 更改了私钥的所有者:
sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key
testing…
为了testing,我只是简单地将options
打印到控制台,使用它之后。 事实上,我看到了私钥和证书的内容(自己尝试一下)。 我也重启httpd
服务器,并请求静态文件。 我看到他们,用TLS保护,没有错。