NPM self_signed_cert_in_chain

jac*_*285 30 node.js npm visual-studio-2015

我有问题让NPM正确安装.我已经尝试单步执行堆栈溢出中的几个帖子的指示,特别是来自这个线程: 使用npm install时出现SELF_SIGNED_CERT_IN_CHAIN错误

我也试过浏览NPM网站上的文档:http: //blog.npmjs.org/post/78165272245/more-help-with-selfsignedcertinchain-and-npm

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

ken*_*orb 57

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

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

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


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

npm config set strict-ssl false
Run Code Online (Sandbox Code Playgroud)

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


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

npm config set cafile "<path to your certificate file>"
Run Code Online (Sandbox Code Playgroud)

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

  • 我是公司用户,在OSX上,我在“证书”类别中“系统”钥匙串下的“钥匙串访问”应用程序中找到了相关证书。我在其中找到一个名称为“ RootCA”的文件,右键单击,导出,选择pem文件格式。在该答案中将该文件用作cafile。 (2认同)

M. *_*out 11

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

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

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

您必须将.pem证书添加到文件(npm config)中.npmrc。当您只需要添加一个证书时,请使用以下命令:

npm config set cafile /path/to/cert.pem
Run Code Online (Sandbox Code Playgroud)

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

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

cat cert1.pem cert2.pem > cert_combined.pem
Run Code Online (Sandbox Code Playgroud)

然后确保.pem在您的目录中指向正确的文件.npmrc

npm config set cafile /path/to/cert_combined.pem
Run Code Online (Sandbox Code Playgroud)

忘记其他人提到的解决方案,例如ca[]="..."NODE_EXTRA_CA_CERTS。此解决方案在使用节点 v16.13.0 和 npm v8.3.0 的多个颁发机构根证书的公司内进行了测试和验证。


小智 6

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

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


HAl*_*tos 6

这对我有用:

$ export NODE_TLS_REJECT_UNAUTHORIZED=0
$ npm install
Run Code Online (Sandbox Code Playgroud)

  • 这可行,但是这根本违背了使用 TLS 的目标。这是不推荐的,甚至是不好的做法。检查此https://github.com/nodejs/node/issues/5258 (2认同)