给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一个拥有该文件的新组,为该组授予读取权限,并添加应该访问该组中文件的用户。

我有我的代码访问。

我做了什么

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

testing…

为了testing,我只是简单地将options打印到控制台,使用它之后。 事实上,我看到了私钥和证书的内容(自己尝试一下)。 我也重启httpd服务器,并请求静态文件。 我看到他们,用TLS保护,没有错。