问题
I'm trying to install Phonegap in Ubuntu. The installation of NodeJS was successful, however I can't install Phonegap itself. Here is the error output of 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
Any help would be appreciated.
回答1:
I got the same error, given I was behind a corporate firewall/proxy and my connection was passed the proxy's certificate.
In your command line run:
npm config set strict-ssl false
NOTE: that this is not best practice to blindly accept untrusted or invalid SSL certificates, which is what the command does (turn off certificate checking). You can run
npm config set strict-ssl true
to turn it back on.
ref: https://thomashunter.name/blog/npm-ssl-errors/
回答2:
This can be fixed without disabling strict SSL, however it is non-trivial.
Find the certificates actually being used, likely you're behind a corporate SSL intercepting proxy. You might be able to use a browser, some CLI tool etc. I ended up running certmgr.msc
in Windows as the certificates are distributed via Group policy and export as p7b files.
Convert the certificates if necessary, I used openssl tool to convert from p7b to PEM (aka .crt)
openssl pkcs7 -print_certs -inform DER -in /mnt/adam/certs/my-company-root.p7b -outform PEM -out my-company-root.crt
Merge, if there is more than one certificate, into a single PEM file, taking care to order from leaf to root.
cat my-company-leaf.crt my-company-intermediate.crt my-company-root.crt > my-company-single.crt
Configure npm at the certificate file
npm config set cafile my-company-single.crt
(or globally)
sudo npm config set -g cafile my-company-single.crt
回答3:
running
npm config set strict-ssl false
solved my problem.
I'm using Vagrant (Linux precise32 Ubuntu ), and Windows 7 as host.
Thanks
来源:https://stackoverflow.com/questions/20747817/error-unable-to-verify-leaf-signature-phonegap-installation