让Node.js访问证书/私钥

时间:2016-07-24 21:54:38

标签: node.js ssl

我正在尝试在我的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)?如果是的话,这样做是否安全?

2 个答案:

答案 0 :(得分:4)

我获得了代码访问权。

我做了什么

  1. 创建了名为certAccess
  2. 的新用户组
  3. 通过说certAccess
  4. 将自己添加到sudo useradd ec2-user -G certAccess
  5. 将root用户(谁是唯一有权访问这些文件的用户)添加到certAccess
  6. 更改了私钥的所有者:sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key
  7. <强>测试...

    要进行测试,我只需在使用后立即将options打印到控制台即可。实际上,我看到了私钥和证书的内容(自己试试)。我还重新启动httpd服务器,并请求静态文件。我看到它们,用TLS保护,没有错。

答案 1 :(得分:1)

问题是这些证书只能由root(也许是其他用户)读取。

您可以使用chmod为所有用户提供读取权限,但这意味着...所有用户都可以访问它。所以,不好主意。

另一个解决方案是将chown这些文件发送给运行node.js的用户,但是如果已经有用户使用这些文件,则会破坏它。在这种情况下,创建一个拥有该文件的新组,为该组授予读取权限,并添加应该访问该组中文件的用户。