gpt4 book ai didi

node.js - 在 Node.js 中使用 Let's Encrypt 证书最安全的方法是什么?

转载 作者:行者123 更新时间:2023-12-04 22:37:47 27 4
gpt4 key购买 nike

我正在 node.js 上开发一个安全的 Web 服务器,我正在使用 Let's Encrypt 证书和 https模块。
我希望它在 Ubuntu/Debian 机器上运行。
默认情况下,证书和私钥存储在:

/etc/letsencrypt/live/domain.name.example/fullchain.pem
/etc/letsencrypt/live/domain.name.example/privkey.pem
这些文件权限只允许root用户读取它们,所以问题是node.js服务器无法正常加载它们使用:
const cert = fs.readFileSync("/etc/letsencrypt/live/domain.name.example/fullchain.pem");
const privKey = fs.readFileSync("/etc/letsencrypt/live/domain.name.example/privkey.pem");
(这将引发权限错误)
我知道的唯一解决方案是:
  • 以root身份运行 Node 服务器,因此它具有文件权限(不推荐用于 Node )。
  • 使用 sudo cp 复制文件到本地目录并使用 sudo chmod +r 应用权限因此每次证书更新后服务器都可以访问它们(让我们加密不建议复制这些文件,尽管这是我目前的解决方案)。
  • 以root身份运行 Node ,加载证书和私钥,然后将uid更改为具有process.setgid()的非root用户和 process.setuid() ,这将删除 root 权限。

  • 我的问题是是否有更好的解决方案来实现这一点,或者这些方法中的一种就可以了?

    最佳答案

    使用setgid .
    将目录的组所有权设置为您用于运行 nodejs 的组。如果您的用户和组是 itay:staff例如,说这个

    chgrp -R staff /etc/letsencrypt/live/domain.name.example
    然后设置 setgid有点像这样的目录权限。
    chmod 02755 staff /etc/letsencrypt/live/domain.name.example
    此后,写入该目录的任何文件都将归该组所有, staff在这个例子中。因此,您的 nodejs 程序将能够毫不费力地读取它们。

    关于node.js - 在 Node.js 中使用 Let's Encrypt 证书最安全的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64411875/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com