npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID
npm ERR! request to https://registry.npmjs.org/http-server failed, reason: Hostname/IP does not match certificate's altnames: Host: registry.npmjs.org. is not in the cert's altnames: DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net
问题:
回答1:
It seems that it's a real problem on the NPM servers. I see the same error when navigating to https://registry.npmjs.org/http-server
in a browser. The server indeed doesn't have a valid certificate. Nothing Windows-specific.
NPM reports there's an issue with incorrect DNS information being cached, here: https://status.npmjs.org/incidents/v22ffls5cd6h
Until the cache clears up, they suggest doing the following:
dig registry.npmjs.com @1.1.1.1
- Add the IP found to your /etc/hosts file.
Update: A bit unrelated, for ones using yarn
: Yarn's mirror of the NPM registry seems to be affected by this problem too, so it seems that at the moment all we can do is wait until the issue resolves itself or the Yarn team applies a workaround on the server.
回答2:
The officially suggested solution with adding IPs found via the dig command into the hosts file somehow didn't work for me.
I found that there is a strict-ssl configuration option for npm.
Creating a .npmrc file in my project folder with strict-ssl = false
solved the issue.
I find this solution safer and more isolated since editing the hosts file might not be possible for everyone and when it is, it will cause every request made from your computer to be routed to a specific IP address.
I plan to remove that file when this temporary issue is fixed.