npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm sees an untrusted root certificate
Seen in npm, npx, yarn and pnpm behind corporate proxies
The certificate chain npm received ends in a root that Node.js doesn't trust, almost always a corporate or private CA.
Common causes
- A TLS-inspecting proxy, firewall or antivirus (Zscaler, Netskope and similar) re-signs registry traffic.
- A private registry uses a certificate from an internal CA.
How to fix it
- Export the corporate root CA as PEM and run npm config set cafile /path/to/corp-ca.pem.
- Or set NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem so every Node.js tool trusts it.
- Ask IT for the CA file rather than setting strict-ssl=false, which turns off verification.
Got a different message? Paste it into the error explainer.
Related errors
- fatal: unable to access '...': SSL certificate problem: unable to get local issuer certificate · Git can't verify the server's certificate
- npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY · npm can't verify the registry's certificate
- Error response from daemon: Get "https://registry.example.com/v2/": x509: certificate signed by unknown authority · Docker doesn't trust the registry's certificate
- fatal: unable to access '...': Could not resolve host: github.com · Git can't resolve the remote's hostname
- error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 · The push is larger than the server or proxy accepts
- error: RPC failed; curl 18 transfer closed with outstanding read data remaining · The connection dropped during a git transfer
- fatal: the remote end hung up unexpectedly · The Git server closed the connection
- kex_exchange_identification: Connection closed by remote host · The SSH server closed the connection before the handshake
- Permission denied (publickey) · The server rejected every SSH key you offered
- Host key verification failed. · SSH couldn't confirm the server's identity
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! · The server's SSH host key is different from last time
- Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa · The server only offers an old host key type