尝试在 Windows 上安装 NPM 包时遇到证书错误。我正在使用节点 v10.9.0
Posted
技术标签:
【中文标题】尝试在 Windows 上安装 NPM 包时遇到证书错误。我正在使用节点 v10.9.0【英文标题】:I am facing a certificate error while trying to install NPM packages on Windows. I am using Node v10.9.0 【发布时间】:2019-02-07 05:14:39 【问题描述】:npm 错误!代码 ERR_TLS_CERT_ALTNAME_INVALID npm 错误!错误号 ERR_TLS_CERT_ALTNAME_INVALID npm 错误!对https://registry.npmjs.org/http-server 的请求失败,原因:主机名/IP 与证书的替代名称不匹配:主机:registry.npmjs.org。不在证书的替代名称中:DNS:a.sni.fastly.net, DNS:a.sni.global-ssl.fastly.net
【问题讨论】:
这真的很有趣,我确认registry.npmjs.org
证书无效,它是发给a.sni.fastly.net
所以域名不匹配(Chrome 显示ERR_CERT_COMMON_NAME_INVALID
)。我不认为这是有意的,并且在 npm 注册表方面看起来像是一个严重的问题。希望他们尽快解决。
检查status.npmjs.org
谢谢大家!!这个问题现在似乎已经解决了。
【参考方案1】:
这似乎是 NPM 服务器上的一个真正问题。在浏览器中导航到 https://registry.npmjs.org/http-server
时,我看到了同样的错误。服务器确实没有有效的证书。没有特定于 Windows 的内容。
NPM 报告缓存不正确的 DNS 信息存在问题,此处:https://status.npmjs.org/incidents/v22ffls5cd6h
在缓存清除之前,他们建议执行以下操作:
dig registry.npmjs.com @1.1.1.1
将找到的 IP 添加到您的 /etc/hosts 文件中。
更新:有点不相关,对于那些使用yarn
的人:Yarn的NPM注册表镜像似乎也受到了这个问题的影响,所以目前我们所能做的似乎是等到问题自行解决或 Yarn 团队在服务器上应用解决方法。
【讨论】:
【参考方案2】:官方建议的将通过 dig 命令找到的 IP 添加到 hosts 文件中的解决方案不知何故对我不起作用。
我发现 npm 有一个strict-ssl 配置选项。
使用strict-ssl = false
在我的项目文件夹中创建一个 .npmrc 文件解决了这个问题。
我发现此解决方案更安全、更独立,因为可能并非所有人都可以编辑 hosts 文件,而且当编辑主机文件时,它会导致从您的计算机发出的每个请求都被路由到特定的 IP 地址。
我计划在解决此临时问题后删除该文件。
【讨论】:
以上是关于尝试在 Windows 上安装 NPM 包时遇到证书错误。我正在使用节点 v10.9.0的主要内容,如果未能解决你的问题,请参考以下文章