错误:UNABLE_TO_VERIFY_LEAF_SIGNATURE Phonegap安装

我想在Ubuntu中安装Phonegap。 NodeJS的安装是成功的,但是我不能安装Phonegap本身。 这里是terminal的错误输出:

test@test-VirtualBox:~$ sudo npm install -g phonegap npm http GET https://registry.npmjs.org/phonegap npm http GET https://registry.npmjs.org/phonegap npm http GET https://registry.npmjs.org/phonegap npm ERR! Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE npm ERR! at SecurePair.<anonymous> (tls.js:1350:32) npm ERR! at SecurePair.EventEmitter.emit (events.js:92:17) npm ERR! at SecurePair.maybeInitFinished (tls.js:963:10) npm ERR! at CleartextStream.read [as _read] (tls.js:463:15) npm ERR! at CleartextStream.Readable.read (_stream_readable.js:320:10) npm ERR! at EncryptedStream.write [as _write] (tls.js:366:25) npm ERR! at doWrite (_stream_writable.js:219:10) npm ERR! at writeOrBuffer (_stream_writable.js:209:5) npm ERR! at EncryptedStream.Writable.write (_stream_writable.js:180:11) npm ERR! at write (_stream_readable.js:573:24) npm ERR! If you need help, you may report this log at: npm ERR! <http://bugs.debian.org/npm> npm ERR! or use npm ERR! reportbug --attach /home/test/npm-debug.log npm npm ERR! System Linux 3.11.0-14-generic npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "phonegap" npm ERR! cwd /home/test npm ERR! node -v v0.10.15 npm ERR! npm -v 1.2.18 npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /home/test/npm-debug.log npm ERR! not ok code 0 

任何帮助,将不胜感激。

我得到了同样的错误,因为我是在公司防火墙/代理后面,我的连接通过了代理的证书。

在你的命令行中运行:

 npm config set strict-ssl false 

注意:这不是盲目接受不可信或无效的SSL证书的最佳实践,这是命令的作用(closures证书检查)。 你可以跑

 npm config set strict-ssl true 

把它重新打开。

ref: https : //thomashunter.name/blog/npm-ssl-errors/

这可以在不禁用严格的SSL的情况下被修复,然而这是不重要的。

查找实际正在使用的证书,可能是在公司的SSL拦截代理之后 。 您可以使用浏览器,CLI工具等。我最终在Windows中运行certmgr.msc ,因为证书是通过组策略分发的,并以p7b文件格式导出。

如果需要的话转换证书,我用openssl工具从p7b转换成PEM(又名.crt)

 openssl pkcs7 -print_certs -inform DER -in /mnt/adam/certs/my-company-root.p7b -outform PEM -out my-company-root.crt 

如果有多个证书,合并成一个单一的PEM文件, 注意从叶子到根的顺序。

 cat my-company-leaf.crt my-company-intermediate.crt my-company-root.crt > my-company-single.crt 

在证书文件中configuration npm

 npm config set cafile my-company-single.crt 

(或全球)

 sudo npm config set -g cafile my-company-single.crt 

赛跑

 npm config set strict-ssl false 

解决了我的问题。

我使用Vagrant(Linux精确32 Ubuntu)和Windows 7作为主机。

谢谢