nodejs" npm ERR!代码SELF_SIGNED_CERT_IN_CHAIN"

时间:2015-03-19 09:39:28

标签: node.js npm

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

npm install log4js

我是从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

我尝试像http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more那样建议{{3}},但我仍然收到此错误。

如何解决此问题并安装NPM?

14 个答案:

答案 0 :(得分:106)

使用以下命令禁用严格的ssl-mode,您将不会收到错误

  
    

npm set strict-ssl false

  

答案 1 :(得分:24)

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

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

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

然后你可以使用:

npm install [your package]

答案 2 :(得分:12)

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

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

参考:Npm SELF_SIGNED_CERT_IN_CHAIN on Azure

答案 3 :(得分:5)

正如上述Akshay Vijay Jain所述,

  
    

npm config set strict-ssl false

  

TURNING OFF SSL BEFORE INSTALLING THE LATEST VERSION

然后安装最新版本

  
    

npm install -g npm @ latest

  

INSTALL SUCCESS!!

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

答案 4 :(得分:4)

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

运行 npm 配置集 ca=""

运行 npm set strict-ssl false

这修复了证书链问题。

答案 5 :(得分:2)

您是否还尝试过设置cafile来容纳一个文件中的所有pems? npm add root CA

如果您在.npmrc文件中使用代理,建议您将no_proxy环境变量设置为<server IP address>

答案 6 :(得分:1)

在我的情况下,我安装了Fiddler,它有一个自签名证书,使得npm安装变得疯狂。

请在此处查看如何删除自签名的Fiddler证书How do you remove the root CA certificate that Fiddler installs

答案 7 :(得分:0)

虽然将StrictSsl设置为false是一个选项,但它会损害您的npm安全性。我建议不要禁用它。以下说明详细说明了Shreedhar的使用cafile的内容。尽管它是从Windows 10机器的角度编写的,但可以对其进行修改。

我们公司通过代理使用SSL Inpsection,因此至少我们需要包括SSL Inspection证书。以下说明假定您能够在尝试使用外部访问npm功能的计算机上使用现代Web浏览器。

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

答案 8 :(得分:0)

在CentOS和其他Linux发行版中,您需要配置NPM以使用您的证书颁发机构文件:

npm config set cafile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -g

显然检查文件是否存在,并包含您可能遇到的所有CA根目录(例如公司代理)。

答案 9 :(得分:0)

截止到2014年2月27日,npm no longer supports its self-signed certificates npm建议使用以下选项来执行以下操作之一:

升级您的npm版本

npm install npm -g --ca=""

-或-

告诉您当前的npm版本以使用已知的注册商

npm config set ca ""

更新:npm发布了More help with SELF_SIGNED_CERT_IN_CHAIN and npm,其中包含针对不同环境的更多解决方案

了解更多here

答案 10 :(得分:0)

以上所有答案均未解决我的情况。罪魁祸首是基于软件包代理程序的6.0.1之前的版本。确实,所有者承认在其包装的测试文件夹中寄出了自签名证书。这迫使重新安装-D和-g,但问题仍在发生。

我通过在node_modules文件夹中搜索* .pem找到了该证书。

仍在努力使npm缓存听我说话。我当然是假人吧?

我将回发其他发现。

找到解决方案

7/7/2020

今天,我们的Angular应用程序已从8.3升级到10.0。你猜怎么了?错误消失了。根本原因是有人发布了一个未签名的证书,这使得它在NPM模块库中显得太深了。甚至NPM 6.15都有它!

答案 11 :(得分:0)

我在这里尝试了许多解决方案,但没有一个真正对我有用。我尝试更新npm,但是超时(当注册表设置为http://registry.npmjs.org/时)或403禁止响应(当注册表设置为http s ://registry.npmjs.org时) /)

最后,意识到我的问题是由代理背后引起的, did 最后为我工作的是:

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

(信用:https://stackoverflow.com/a/12832637/4191296

答案 12 :(得分:0)

您可以禁用TLS连接的证书验证:

NODE_TLS_REJECT_UNAUTHORIZED=0 npm install puppeteer

答案 13 :(得分:-1)

我重新安装了节点js和angular cli。它开始工作了!