尝试构建“node-gyp configure”时堆栈“错误:证书链中的自签名证书”
Posted
技术标签:
【中文标题】尝试构建“node-gyp configure”时堆栈“错误:证书链中的自签名证书”【英文标题】:stack "Error: self signed certificate in certificate chain" when trying to build 'node-gyp configure' 【发布时间】:2016-04-09 02:49:10 【问题描述】:尝试为 sql server 构建 nodejs 的 microsoft 驱动程序时出现以下错误
如果它以 ok 结尾,它会起作用
gyp 信息使用 node-gyp@3.2.1
gyp 信息使用 node@5.3.0 | win32 | x64
gyp http GET https://nodejs.org/download/release/v5.3.0/node-v5.3.0-headers.tar.gz
gyp WARN 安装出错,回滚安装
gyp 错误!配置错误
gyp 错误! stack 错误:证书链中的自签名证书
gyp 错误!错误堆栈(本机)
gyp 错误!堆栈在 TLSSocket。 (_tls_wrap.js:1057:38)
gyp 错误!堆栈在 emitNone (events.js:67:13)
gyp 错误!堆栈在 TLSSocket.emit (events.js:166:7)
gyp 错误!堆栈在 TLSSocket._fini
enter code here
shInitgyp 错误!不好”
我尝试了以下解决方法,但它不起作用
1) upgrade your version of npm
npm install npm -g --ca=null
- or -
2) tell your current version of npm to use known registrars
npm config set ca=""
谁能指导我如何解决这个证书问题
【问题讨论】:
是否有阻止 npm 访问的防病毒软件?你目前使用的是什么版本的 npm?谢谢 npm 版本是 3.5.2,是的,有一个 McAfee 防病毒系统是公司网络,谢谢 Dilip 您可以尝试禁用防病毒软件并执行安装吗? HTTPS 保护通常会阻止 npm 构建包。谢谢 由于我的系统在公司网络中,我将无法做到这一点,有没有其他方法可以绕过它,谢谢 Dilip 【参考方案1】:不幸的是 node-gyp 没有使用 npm 的证书设置。
如果您正在调用 node-gyp,您可以更新到最新的 node-gyp,然后使用新的 --cafile
参数来提供有效的 ca 证书。
如果您使用 npm 安装使用 node-gyp 自行构建的软件包,您唯一的办法是事先设置 NODE_TLS_REJECT_UNAUTHORIZED=0
环境变量,让它忽略 CA 证书问题。
在此处查看 github 上的讨论:https://github.com/nodejs/node-gyp/issues/695
【讨论】:
更改进入节点环境,而不是进入系统环境。 npm 配置设置 NODE_TLS_REJECT_UNAUTHORIZED=0 @pixelquadrat 我很确定情况并非如此。使用npm config
命令对我来说没有任何区别,而使用环境变量则解决了问题(......然后是另一个问题,但这是另一回事!)【参考方案2】:
使用 npm config set strict-ssl false
并解决了问题。
【讨论】:
【参考方案3】:对我来说,gyp rebuild 找不到 binding.gyp,它正在尝试下载它。
尝试运行:
sudo npm install -g --unsafe-perm binding
【讨论】:
【参考方案4】:使用以下命令设置您在进行 HTTPS 请求时使用的证书文件:
npm config set cafile /path/to/your/cert.pem --global
【讨论】:
【参考方案5】:node-gyp
开始编译 node.js
插件源时遇到了同样的问题。并且正如@mujimu建议的那样,在执行npm install
之前将其设置一个shell变量NODE_TLS_REJECT_UNAUTHORIZED
值固定为0
,如下:
$ set NODE_TLS_REJECT_UNAUTHORIZED=0
$ npm install
【讨论】:
【参考方案6】:如果这与公司代理有关,可通过 3 个步骤解决:
-
检索公共证书并将其转换为 .pem 格式。该文件看起来像这样。
-----BEGIN CERTIFICATE----- ABCDEFGHIJKLMNOPQRSTBLABLA...MORECHARSHERE -----END CERTIFICATE-----\n------BEGIN CERTIFICATE ... etc
取决于您的公司
将它们存储在您电脑的某个位置。我将它们存储在我的仓库中
在终端执行
NODE_EXTRA_CA_CERTS=/home/<yourUser>/git/myproject/certs/myBundle.pem npm i --quiet
对于 Windows,您必须将其更改为:NODE_EXTRA_CA_CERTS=C:\Users\<yourUser>\git\myproject\certs\myBundle.pem npm i --quiet
【讨论】:
【参考方案7】:尝试先卸载 Angular/cli 并安装 node-gyp,然后尝试重新安装 Angular cli
npm uninstall -g @angular/cli
npm install -g node-gyp
npm install -g @angular/cli
效果很好
【讨论】:
以上是关于尝试构建“node-gyp configure”时堆栈“错误:证书链中的自签名证书”的主要内容,如果未能解决你的问题,请参考以下文章