Option 1: Disable the warning (useful for dev)
From your question I’m guessing you are doing this in development as you are using a self signed certificate for SSL communication.
If that’s the case, add as an environment variable wherever you are running node
export NODE_TLS_REJECT_UNAUTHORIZED='0' node app.js
or running node directly with
NODE_TLS_REJECT_UNAUTHORIZED='0' node app.js
This instructs Node to allow untrusted certificates (untrusted = not verified by a certificate authority)
If you don’t want to set an environment variable or need to do this for multiple applications npm has a strict-ssl
config you set to false
npm config set strict-ssl=false
Option 2: Load in CA cert, like postman (useful for testing with TLS)
If you have a CA cert already like the poster @kDoyle mentioned then you can configure in each request (thanks @nic ferrier).
let opts = { method: 'GET', hostname: "localhost", port: listener.address().port, path: '/', ca: fs.readFileSync("cacert.pem") }; https.request(opts, (response) => { }).end();
Option 3: Use a proper SSL Cert from a trusted source (useful for production)
letsencrypt.org is free, easy to set up and the keys can be automatically rotated. https://letsencrypt.org/docs/