ошибка получения: «Ошибка: ошибка SSL: SELF_SIGNED_CERT_IN_CHAIN» при использовании npm - PullRequest
249 голосов
/ 09 марта 2012

Я использую npm v1.0.104 / node 0.6.12 в ubuntu - я получаю сообщение об ошибке, скопированной ниже, при попытке установить любые новые модули через npm (ранее я проверял socket.io, используя http, а не https, хотя мне интересноесли это могло привести к проблеме с сертификатами npm / unsigned).Ошибка появляется, когда npm пытается разрешить URL-адрес 'https://registry.npmjs.org'.В любом случае я могу проигнорировать ошибку или, возможно, найти / добавить сертификат в доверенное хранилище, чтобы продолжить использовать npm.

Буду признателен за понимание того, что необходимо сделать для решения проблемы (я бы предпочел решить проблему с помощью конфигурации, а не переустанавливать, если это возможно).

Ошибка: «Ошибка: Ошибка SSL: SELF_SIGNED_CERT_IN_CHAIN»

Полное сообщение:

npm ERR! Error: SSL Error: SELF_SIGNED_CERT_IN_CHAIN
npm ERR!     at ClientRequest.<anonymous> (/usr/lib/node_modules/npm/node_modules/request/main.js:252:28)
npm ERR!     at ClientRequest.emit (events.js:67:17)
npm ERR!     at HTTPParser.onIncoming (http.js:1261:11)
npm ERR!     at HTTPParser.onHeadersComplete (http.js:102:31)
npm ERR!     at CleartextStream.ondata (http.js:1150:24)
npm ERR!     at CleartextStream._push (tls.js:375:27)
npm ERR!     at SecurePair.cycle (tls.js:734:20)
npm ERR!     at EncryptedStream.write (tls.js:130:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR!     at Socket.emit (events.js:67:17)
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR! 
npm ERR! System Linux 2.6.38-13-generic
npm ERR! command "node" "/usr/bin/npm" "install" "jed"
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.0.104

Ответы [ 13 ]

316 голосов
/ 09 марта 2012

Выполнение следующих действий помогло решить проблему:

npm config set strict-ssl false

Я не могу комментировать, вызовет ли это какие-либо другие проблемы в данный момент времени.Надеюсь, это поможет.

213 голосов
/ 28 февраля 2014

По состоянию на 27 февраля 2014 г. npm больше не поддерживает свои самозаверяющие сертификаты . Следующие параметры, рекомендованные npm, позволяют выполнить одно из следующих действий:

Обновите вашу версию npm

npm install npm -g --ca=""

- ИЛИ -

Скажите вашей текущей версии npm использовать известных регистраторов

npm config set ca ""

Обновление: опубликовано npm Дополнительная помощь по SELF_SIGNED_CERT_IN_CHAIN ​​и npm с дополнительными решениями, характерными для различных сред



Вам может понадобиться или не понадобиться добавлять sudo к рекомендациям.

Другие опции

Похоже, что у людей возникают проблемы с использованием рекомендаций npm, поэтому вот некоторые другие потенциальные решения.

Узел обновлениясамо по себе
Получение этой ошибки может означать, что у вас более старая версия узла, которая, естественно, поставляется с более старой версией npm.Одним из решений является обновление вашей версии Node.Это, вероятно, лучший вариант, так как он обновляет вас и исправляет существующие ошибки и уязвимости.

Этот процесс зависит от того, как вы установили Node, свою операционную систему и т. Д.

Обновление npm
Поскольку вы, вероятно, попали сюда при попытке install пакета, возможно, что npm install npm -g может завершиться с той же ошибкой.Если это так, используйте update.В соответствии с предложением Nisanth Sojan:

npm update npm -g

Обновить альтернативу npm
Одним из способов решения основной проблемы является использование известных регистраторов, установка, а затем прекращение использования известных регистраторов.Как предложено jnylen:

npm config set ca ""
npm install npm -g
npm config delete ca
65 голосов
/ 29 мая 2012

Пока я просто переключил URL реестра с https на http. Как это:

npm config set registry="http://registry.npmjs.org/"
34 голосов
/ 26 января 2016
npm config set strict-ssl false -g

Чтобы сохранить его глобально

30 голосов
/ 28 февраля 2014

Вам нужно обновить npm.

// Do this first, or the upgrade will fail
npm config set ca ""

npm install npm -g

// Undo the previous config change
npm config delete ca

Возможно, вам потребуется добавить префикс этих команд к sudo.

Источник: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

11 голосов
/ 19 февраля 2016

Ошибка SELF_SIGNED_CERT_IN_CHAIN означает, что у вас есть самозаверяющий сертификат в цепочке сертификатов, который в принципе не является доверенным для системы.

Если это происходит, то в основном происходит что-то подозрительное, поэтому, как уже говорили люди,не рекомендуется просто отключать проверки сертификатов, но лучше понять, в чем заключается проблема, и устранить причину.

Это может быть связано либо с:

Если вы доверяете хосту, вы можете экспортировать самоподписанный сертификат из цепочки и импортировать его в систему, чтобы они были помечены как доверенные.

Этоэто можно сделать, проверив сертификаты (изменив example.com на репозиторий npm, который не работает на основе npm-debug.log):

openssl s_client -showcerts -connect example.com:443 < /dev/null

, затем сохраните содержимое сертификата (между BEGIN и END) в файл .crt для его импорта.

Linux

Согласно предложению , вы можете добавить экспортированный сертификат в файл /etc/environment (Узел 7.4+)Например:

NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCer‌​ts.pem

CentOS

В CentOS 5 это можно добавить в файл /etc/pki/tls/certs/ca-bundle.crt, например,

ex +'g/BEGIN CERTIFICATE/,/END CERTIFICATE/p' <(echo | openssl s_client -showcerts -connect example.com:443) -scq | sudo tee -a /etc/pki/tls/certs/ca-bundle.crt
sudo update-ca-trust force-enable
sudo update-ca-trust extract
npm install

Примечание. Только для экспортапервый сертификат, удалите g в начале.

В CentOS 6 файл сертификата можно скопировать в /etc/pki/ca-trust/source/anchors/.

Ubuntu / Debian

В Ubuntu / Debian скопируйте файл CRT в /usr/local/share/ca-certificates/ и запустите:

sudo update-ca-certificates

macOS

В macOS вы можете запустить:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crt

Windows

В Windows: certutil -addstore -f "ROOT" new-root-certificate.crt


См. Также: npm - Устранение неполадок - Ошибка SSL

8 голосов
/ 28 февраля 2014

Хранилище больше не поддерживает самозаверяющие сертификаты.Вам необходимо обновить npm.

// Disable the certificate temporarily in order to do the upgrade
npm config set ca ""

// Upgrade npm. -g (global) means you need root permissions; be root 
// or prepend `sudo`
sudo npm install npm -g

// Undo the previous config change
npm config delete ca

// For Ubuntu/Debian-sid/Mint, node package is renamed to nodejs which 
// npm cannot find. Fix this:
sudo ln -s /usr/bin/nodejs /usr/bin/node

Вам необходимо открыть новый сеанс терминала, чтобы использовать обновленный npm.

Источник: ЭтоПервоначально редактирование ответа jnylen .Хотя в руководящих принципах говорится: «Мы приветствуем все конструктивные изменения, но, пожалуйста, сделайте их существенными», редактирование было отклонено из-за «Это изменение слишком сильно меняет исходное сообщение; исходное значение или намерениесообщение будет потеряно. " Я полагаю, сообщество предпочитает отдельный ответ.

7 голосов
/ 28 февраля 2014

Для тех, кто на mac с той же проблемой и установил npm через homebrew :

brew uninstall npm

затем

brew install npm

У меня работает на osx (10.9.1)

EDIT : Вам может понадобиться brew update перед установкой npm.Вы также можете сделать brew upgrade после обновления homebrew.Также может быть полезно запустить brew doctor, если вы столкнетесь с другими проблемами.

5 голосов
/ 20 ноября 2018

Помещение до того, как команда сработает NODE_TLS_REJECT_UNAUTHORIZED=0. например: NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...

Лучше всего выяснить, как заставить узел видеть самозаверяющий сертификат действительным. строгое предложение выше не работает для меня по некоторым причинам. Если вы понимаете последствия для безопасности и нуждаетесь во временном быстром исправлении, это то, что я обнаружил в некоторых случайных проблемах github во время поиска в Google этой ошибки.

3 голосов
/ 28 февраля 2014

Быстрое и чистое решение (протестировано на linux) (После утомления 27 февраля 2014 г.)


Удаление npm

npm rm npm -g

Установить npm (новый URL-адрес www.npmjs.org вместо npmjs.org )

curl https://www.npmjs.org/install.sh | sh

Совет : как установить node.js в linux https://stackoverflow.com/a/22099363/333061

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...