Запустите NodeJS через pm2 с правами sudo для доступа к ключам SSL - PullRequest
0 голосов
/ 02 марта 2019

У меня есть цифровая океаническая капля, работающая под управлением Ubuntu 16.04.Я следовал этому руководству , чтобы использовать HTTPS с моим сервером NodeJS.

Короче говоря

Я использовал certbot для создания сертификата SSL, что означало, что на этот каталог /etc/letsencrypt/live/yourdomain.com/, создано 3 файла:

  1. privkey.pem
  2. cert.pem
  3. chain.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, он работал без проблем.

Небольшое уведомление

Я знаю, что могу изменить разрешения для файлов, но я бы не стал этого делать, поскольку я прочитал несколько раз, что лучше не изменять разрешения для этих файлов.

И самое главное ...

Спасибо за помощь:)

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете использовать этот сценарий certbot .

Дополнительная информация об обновлениях certbot может быть полезна, а также другие решения этой проблемы наЗашифруем форумы .

...