尝试在 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的主要内容,如果未能解决你的问题,请参考以下文章

安装 npm 包时 /src 是啥意思?

在 Windows 上安装 python-midi 包时出错

安装 npm 包时自动安装类型定义

在 Windows 上安装 Rmpi​​ 包时出错

在 npm 中发布新版本的包时出错

vagrant/homestead/windows 上的 npm 安装错误:EPROTO:协议错误,符号链接