Ошибка: UNABLE_TO_VERIFY_LEAF_SIGNATURE Установка телефонного разговора

Я пытаюсь установить Phonegap в Ubuntu. Установка NodeJS прошла успешно, однако я не могу установить сам Phonegap. Вот вывод ошибки терминала:

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

Любая помощь будет оценена.


person bofanda    schedule 23.12.2013    source источник


Ответы (6)


Я получил ту же ошибку, учитывая, что я был за корпоративным брандмауэром / прокси, и моему соединению был передан сертификат прокси.

В командной строке запустите:

npm config set strict-ssl false

ПРИМЕЧАНИЕ: это не лучшая практика - слепо принимать ненадежные или недействительные сертификаты SSL, что и делает команда (отключение проверки сертификатов). Вы можете запустить

npm config set strict-ssl true

чтобы снова его включить.

ссылка: https://thomashunter.name/blog/npm-ssl-errors/

person jdmonty    schedule 27.01.2014
comment
Спасибо .. это сработало и в случае установки Angular CLI с npm. - person kmwtnarendra; 19.09.2017
comment
СПАСИБО! Я провел все утро, пытаясь найти решение - person Raphael; 25.05.2018

Это можно исправить, не отключая строгий SSL, однако это нетривиально.

Найдите реально используемые сертификаты. Вероятно, вы за корпоративным прокси для перехвата SSL. Возможно, вы сможете использовать браузер, какой-нибудь инструмент CLI и т. Д. В итоге я запустил certmgr.msc в Windows, поскольку сертификаты распространяются через групповую политику и экспортируются как файлы 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

Настройте npm в файле сертификата.

npm config set cafile my-company-single.crt

(или глобально)

sudo npm config set -g cafile my-company-single.crt
person Adam    schedule 13.08.2015
comment
просто попробовал, и он работает! Для меня это лучше, чем вообще отключать ssl ... Вы не знаете, что может случиться в будущем. Спасибо за решение :) - person pomeh; 19.08.2019

Бег

npm config set strict-ssl false

решил мою проблему.

Я использую Vagrant (Linux specific32 Ubuntu) и Windows 7 в качестве хоста.

Спасибо

person jlucasps    schedule 03.02.2014

на случай, если кто-то такой неуклюжий, как я, я получил UNABLE_TO_VERIFY_LEAF_SIGNATURE на npm install, когда забыл добавить git+ перед URL-адресом моего проекта.

я имел

npm install --save https://myserv.er/my/project-path.git

вместо

npm install --save git+https://myserv.er/my/project-path.git
person user12709614    schedule 14.01.2020

Вы также можете отключить проверку SSL в своем коде, используя переменную среды узла:

в вашем файле index.js добавьте:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

Обратите внимание, что это не очень хорошая привычка, так как он не будет пытаться проверять действительность сертификата https.

person foufrix    schedule 12.06.2020

Убедитесь, что у root есть свойства конфигурации.

При использовании sudo вы работаете в среде, настроенной для root. У root может быть другая конфигурация узла, и он может не знать ваших сертификатов. Попробуйте передать конфигурацию среды root с помощью -E:

$ sudo -E npm install -g phonegap
person Greg    schedule 26.03.2021