gpt4 book ai didi

node.js - 使用 sudo 权限通过 pm2 启动 NodeJS 以访问 SSL key

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:59 24 4
gpt4 key购买 nike

我有一个运行 Ubuntu 16.04 的 digital ocean 水滴。我关注了this guide在我的 NodeJS 服务器上使用 HTTPS。

简而言之

我使用certbot创建了一个SSL证书,这意味着在这个目录 /etc/letsencrypt/live/yourdomain.com/,创建了3个文件:

  1. 私钥.pem
  2. cert.pem
  3. 链.pem

所以在我的服务器代码中,我必须获取这些文件,我这样做:

// Certificate
const privateKey = fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/yourdomain.com/chain.pem', 'utf8');

问题

当我尝试使用命令 node server 或使用 pm2 start server 运行我的服务器时,我收到此错误消息:

  { Error: EACCES: permission denied, open '/etc/letsencrypt/live/yourdomain.com/privkey.pem'
at Object.fs.openSync (fs.js:646:18)
at Object.fs.readFileSync (fs.js:551:33)
at Object.<anonymous> (/home/myuser/mywebsite/lib/server-configurations.js:13:21)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
errno: -13,
code: 'EACCES',
syscall: 'open',
path: '/etc/letsencrypt/live/yourdomain.com/privkey.pem' }

但是

当我尝试使用 sudo node server 启动它时,它确实没有任何问题。

小通知

我知道我可以更改文件的权限,但我宁愿不这样做,因为我多次阅读过最好不要更改这些文件的权限。

最重要的是......

谢谢你的帮助:)

最佳答案

我确实根据 Let's encrypt SSL couldn't start by "Error: EACCES: permission denied, open '/etc/letsencrypt/live/domain.net/privkey.pem'" 更改了权限这对运行有用

Node 文件.js

现在 pm2 的进程仍然无法访问证书,即使它应该以与 Node 相同的用户身份运行......令人困惑。

关于node.js - 使用 sudo 权限通过 pm2 启动 NodeJS 以访问 SSL key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54962529/

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