3

I'm having an error saying that EACCES: permission denied, open '/etc/letsencrypt/live/example.com/privkey.pem' while that file can be accessed and modified by the current user that I'm using while running that nodejs project. I do the answer here and it allows me to access that file, but I'm still having that error when I run my code on pm2, what's wrong here?

My error saying that

{ Error: EACCES: permission denied, open 
    '/etc/letsencrypt/live/example.com/privkey.pem'
    at Object.openSync (fs.js:438:3)
    at Object.readFileSync (fs.js:343:35)
    at Object.<anonymous> (/home/samsung/projects/samsunggalaxy/galaxy/dist/index.js:126:17)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function._load (/usr/lib/node_modules/pm2/node_modules/@pm2/io/build/main/metrics/httpMetrics.js:172:43)
    at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:27:21)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: '/etc/letsencrypt/live/example.com/privkey.pem' }

While my code on reading the file using nodejs was

import https from 'https';
import { priv_key, cert} from './custom/certs';
const fs = require('fs');
const socket = require('socket.io');

const option = {
    key: fs.readFileSync(priv_key), // '/etc/letsencrypt/live/example.com/privkey.pem'
    cert: fs.readFileSync(cert), // '/etc/letsencrypt/live/example.com/cert.pem'
    requestCert: false,
    rejectUnauthorized: false,
};

option.agent = new https.Agent(option);

const httpsServer = https.createServer(option, app);
const httpsIo = socket.listen(httpsServer)
httpsServer.listen(3005, () => {
    console.log(`started on port ${httpsServer.address().port}`);
});
Dylan
  • 1,121
  • 1
  • 13
  • 28
  • You stored file locally on your linux machine right? What chmod does folder and file have? – josip May 02 '19 at 15:35
  • @Bongnar I use sudo `$ chmod 710 /etc/letsencrypt/live` and `$ sudo chmod 710 /etc/letsencrypt/archive` folowing the answer here: https://stackoverflow.com/questions/48078083 – Dylan May 02 '19 at 19:25

0 Answers0