У меня есть цифровая океаническая капля, работающая под управлением Ubuntu 16.04.Я следовал этому руководству , чтобы использовать HTTPS с моим сервером NodeJS.
Короче говоря
Я использовал certbot для создания сертификата SSL, что означало, что на этот каталог /etc/letsencrypt/live/yourdomain.com/
, создано 3 файла:
- privkey.pem
- cert.pem
- 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
, он работал без проблем.
Небольшое уведомление
Я знаю, что могу изменить разрешения для файлов, но я бы не стал этого делать, поскольку я прочитал несколько раз, что лучше не изменять разрешения для этих файлов.
И самое главное ...
Спасибо за помощь:)