【问题标题】:Nodejs ssl key permission deniedNodejs ssl密钥权限被拒绝
【发布时间】:2016-10-02 15:17:21
【问题描述】:

我在尝试从我的 nodejs 应用程序访问我的 ssl 密钥和证书时收到此错误:

如您所见,我已将我的用户添加为对文件具有权限。我不知道还能做什么?

【问题讨论】:

  • 我也有这个问题,你找到解决办法了吗?

标签: node.js linux lets-encrypt


【解决方案1】:

好的,我找到了解决方案。

基本上,LetsEncrypt 在/etc/letsencrypt/live//etc/letsencrypt/archive/ 中生成证书文件。这两个文件夹的权限是744(“所有者可以读、写和执行;组和用户可以读”),但这还不够:你必须赋予读和执行的权限:

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

出于安全原因,这当然不是一个好的解决方案,但它是我发现唯一可行的解​​决方案,而且肯定比以 root 身份运行 Node.js 服务器更好!

来源:https://groups.google.com/d/msg/node-red/g8cPmNgGnh0/guWq-8szBAAJ

【讨论】:

  • 我认为没有更好的解决方案,Debian 使用一个名为ssl-cert 的组作为默认密钥文件/etc/ssl/private/ssl-cert-snakeoil.key,这里也建议这样:stackoverflow.com/questions/38557213/… 但是密钥文件应具有 640 之类的权限(或 740 或 750 为您的示例),出于安全原因,您不应像您那样向所有用户授予读取权限。
  • 我添加了 -R 参数所以会做递归 chmod
【解决方案2】:

您可以尝试su -isudu susudo -s 然后cd {DIR}

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,如果您以 ubuntu 用户身份运行 nodejs(如果您在亚马逊 AWS 和 EC2 上),请不要在您的 let's encrypt 证书上设置 777 chmod。

    您需要做的就是允许 ubuntu 用户访问它们。

    sudo chown ubuntu -R /etc/letsencrypt
    

    使用 ubuntu 用户运行的节点应用程序现在可以访问这些证书。您可以创建另一个用户并使用它运行 NodeJS 应用程序并允许访问证书(只读)

    【讨论】:

      猜你喜欢
      • 2016-10-15
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多