NPM self_signed_cert_in_chain

问题描述 投票:0回答:4

我在正确安装 NPM 时遇到问题。我已尝试逐步执行有关堆栈溢出的几篇文章中的说明,特别是来自此线程的说明: 使用 npm install 时出现 SELF_SIGNED_CERT_IN_CHAIN 错误

我还尝试浏览 NPM 网站上的文档: https://blog.npmjs.org/post/78165272245/more-help-with-self-signed-cert-in-chain-and-npm.html

每次尝试安装时我仍然收到错误消息。请指教。

node.js npm visual-studio-2015
4个回答
139
投票

如果您使用公司代理(例如使用 Blue Coat),则应使用 http 而不是 https 作为存储库地址,例如

npm config set registry="http://registry.npmjs.org/"

请参阅:错误:SSL 错误:使用 npm 时的 SELF_SIGNED_CERT_IN_CHAIN


您还可以将失败的自证书导入系统并标记为受信任,或在安装软件包时临时禁用 SSL 验证(快速但不推荐的方法):

npm config set strict-ssl false

请参阅:错误:SSL 错误:使用 npm 时的 SELF_SIGNED_CERT_IN_CHAIN


推荐的方法(更痛苦)只是指向正确的证书文件,例如

npm config set cafile "<path to your certificate file>"

请参阅:如何修复在 Windows 上运行 Npm 时出现 SSL 证书错误?.


13
投票

这对我有用:

$ export NODE_TLS_REJECT_UNAUTHORIZED=0
$ npm install

11
投票

我知道这个问题几年前就已经发布了。由于它仍然出现在 Google 的顶部结果中,我想分享我针对此问题的正确且安全的解决方案。

一个权威根证书的解决方案

我建议大家确保使用 https 注册表来保证连接的安全。另外,停止禁用 strict-ssl。许多人都忽略了这一点,并寻求快速修复而不是正确的解决方案。

您必须将

.pem
证书添加到
.npmrc
文件(npm 配置)中。当您只需要添加一个证书时,请使用以下内容:

npm config set cafile /path/to/cert.pem

多权威根证书的解决方案

当您的公司使用多个证书(如我的)时,您首先需要通过在终端中输入以下命令将证书合并为一个

.pem

cat cert1.pem cert2.pem > cert_combined.pem

然后确保在您的

.pem
 中指向正确的 
.npmrc

文件
npm config set cafile /path/to/cert_combined.pem

忘记其他人提到的解决方案,例如

ca[]="..."
NODE_EXTRA_CA_CERTS
。该解决方案在使用节点 v16.13.0 和 npm v8.3.0 的多个权威根证书的公司内进行了测试和验证。


3
投票

使用下面的命令,它可以正常工作:

npm 配置集注册表=“http://registry.npmjs.org/”

© www.soinside.com 2019 - 2024. All rights reserved.