尝试构建“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._finienter code hereshInit

gyp 错误!不好”

我尝试了以下解决方法,但它不起作用

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”时堆栈“错误:证书链中的自签名证书”的主要内容,如果未能解决你的问题,请参考以下文章

尝试构建 Angular 构建时收到错误

尝试构建时无法解析模块

尝试构建项目时文件重复错误

尝试构建默认 Android Studio 应用时出错

当 docker-maven 插件尝试构建映像时会发生啥?

尝试运行特定于平台的构建时 Automake 失败