nodejs"npm ERR!code SELF_SIGNED_CERT_IN_CHAIN"

dev*_*r82 63 node.js npm

我是nodejs和npm的新手.我正在尝试安装log4js,这是安装的命令:

npm install log4js
Run Code Online (Sandbox Code Playgroud)

我正在从Windows命令行运行它,并且在标记旋转一段时间后,我收到以下错误:

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "log4js"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN

npm ERR! self signed certificate in certificate chain
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     C:\srv\npm-debug.log
Run Code Online (Sandbox Code Playgroud)

我尝试过npm config set ca=""像这里建议的那样:http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more但我仍然收到此错误.

我该如何解决这个问题并安装NPM?

Aks*_*ain 139

同样的事情,但我必须提到我只使用

npm set strict-ssl false

它解决了我的问题.

  • 这解决了我的问题:npm set strict-ssl false (3认同)
  • 甚至解决了我的问题。我所要做的就是以超级用户身份运行它;-) (2认同)
  • 这是一种不安全的方法,使您容易受到 MITM 攻击。正确的解决方案是找到实际使用的证书并将其添加到您的 npm cafile 中。 (2认同)
  • @AkshayVijayJain 我的 npm 版本是 6.13.4 (2认同)
  • 值得补充的是,您应该在安装完成后重新启用 strict-ssl。`npm 设置 strict-ssl true` (2认同)

小智 33

我在Windows 10上遇到了同样的问题.

打开windows powerShell并输入以下命令:

npm config set registry http://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

npm install [your package]
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案与设置 npm set strict-ssl false 没有什么不同。使用http(不带s)容易受到中间人攻击 (8认同)
  • 这应该是公认的答案。将strict-ssl设置为false是危险的。感谢您解决这个头痛问题。 (3认同)

izm*_*axx 12

我也是npm的新手.除了链接中提到的命令,我尝试了以下内容,它解决了我的问题:

  • npm set strict-ssl false
  • 暂时禁用McAfee

参考:Azure上的Npm SELF_SIGNED_CERT_IN_CHAIN

  • @AndrewLandsverk如果你是一个限制性企业防火墙的话. (8认同)
  • 禁用SSL永远不应该是答案.必须有一些解决方法... (3认同)

小智 7

正如Akshay Vijay Jain所述,

npm config set strict-ssl false

在安装最新版本之前关闭SSL

然后安装最新版本

npm install -g npm @ latest

安装成功!!

请参阅为清晰起见添加的屏幕截图.


gre*_*ian 6

虽然将 StrictSsl 设置为 false 是一种选择,但它会损害您的 npm 安全性。我建议不要禁用它。以下说明详细说明了 Shreedhar 使用 cafile 的帖子。虽然它是从 Windows 10 机器的角度编写的,但它可以进行调整。

我们公司通过代理使用 SSL Inpsection,所以至少我们需要包含 SSL 检查证书。以下说明假设您能够在尝试使用外部访问 npm 功能的机器上使用现代 Web 浏览器。

  1. 从命令控制台,运行以下命令: npm config list
  2. 记录 metrics-registry 的值。这应该是一个 URL。
  3. 打开浏览器访问 URL。在撰写此答案时,它是https://registry.npmjs.org/
  4. 打开站点的证书信息。对于 Windows 上的 Chrome,这涉及单击地址栏中 URL 左侧的挂锁图标并选择选项Certificate
  5. 检查认证路径。对我来说,有我们的公司 CA 和我们的 SSL 检查证书。
  6. 将每个证书下载为 Base64 编码到 .cer 或 .crt 文件中。
  7. 将所有证书按原样编译到一个 .cer 或 .crt 文件中。
  8. 将此文件放入用户文件夹中。虽然我们有一个基于网络的用户文件夹,但我推荐并使用基于本地机器的文件夹。请注意此文件的完整路径。
  9. 从命令控制台,运行以下命令:npm config set cafile "C:\Local\Path\To\cafile4npm.cer"修改步骤 8 中记录的路径和文件。
  10. 运行你的npm install命令。

  • @JohnPeters 如果单击 URL 地址栏左侧的挂锁图标,应该有一个用于查看证书的选项。在 Windows 10 中,弹出的窗口包含 3 个选项卡:常规、详细信息和证书路径。虽然“证书路径”选项卡显示您与服务器之间的所有证书,但您可以从“详细信息”选项卡下载该文件。在 Windows 10 上,按钮是复制到文件... (2认同)

Pre*_*rem 6

通过 Docker 构建执行时遇到相同的错误。然而,Powershell 执行没有错误。然后使用以下内容修改 dockerfile(如上所述):

运行 npm 配置集 ca=""

RUN npm 设置 strict-ssl false

这解决了证书链问题。


归档时间:

查看次数:

53277 次

最近记录:

6 年 前