Я использую 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
источник
Ответы:
Выполнение следующего помогло решить проблему:
Я не могу комментировать, вызовет ли это какие-либо другие проблемы в данный момент. Надеюсь, поможет.
источник
С 27 февраля 2014 года npm больше не поддерживает свои самозаверяющие сертификаты . Следующие параметры, рекомендованные npm, позволяют выполнить одно из следующих действий:
Обновите свою версию npm
-- ИЛИ --
Сообщите вашей текущей версии npm использовать известных регистраторов
Обновление: npm опубликовал дополнительную справку по SELF_SIGNED_CERT_IN_CHAIN и npm с дополнительными решениями для разных сред
Вам может понадобиться или не потребоваться готовиться
sudo
к рекомендациям.Другие варианты
Похоже, что у людей возникают проблемы с использованием рекомендаций npm, поэтому вот некоторые другие потенциальные решения.
Сам узел обновления
Получив эту ошибку, можно предположить, что у вас более старая версия узла, которая, естественно, поставляется с более старой версией npm. Одним из решений является обновление вашей версии Node. Это, вероятно, лучший вариант, так как он обновляет вас и исправляет существующие ошибки и уязвимости.
Процесс здесь зависит от того, как вы установили Node, вашу операционную систему и так далее.
Обновление npm.
Возможно, вы попали сюда, пытаясь
install
создать пакет, возможно, что онnpm install npm -g
потерпит неудачу с той же ошибкой. Если это так, используйтеupdate
вместо этого. Как предлагает Нисант Соджан:Обновите альтернативу npm.
Одним из способов решения этой проблемы является использование известных регистраторов, установка и прекращение использования известных регистраторов. Как предложено jnylen:
источник
npm config set ca ""
сначала выполните обновление, затем отмените изменение конфигурации. Смотрите: stackoverflow.com/a/22099006/106302sudo
меняет пользователя,-g
устанавливает флажки , если установить глобально для этого пользователя или только локальноnode_modules
.Пока я просто переключил URL реестра с https на http. Как это:
источник
Чтобы сохранить это глобально
источник
cb() never called!
ошибку npmВам необходимо обновить npm.
Вам может понадобиться добавить префикс к этим командам
sudo
.Источник: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
источник
sudo
требуется вообще, и только префикс команды обновленияsudo
сработал хорошо для меня. YMMV.Ошибка
SELF_SIGNED_CERT_IN_CHAIN
означает, что у вас есть самозаверяющий сертификат в цепочке сертификатов, который в основном не является доверенным для системы.Если это происходит, в основном происходит что-то подозрительное, поэтому, как уже прокомментировали люди, не рекомендуется просто отключать проверки сертификатов, но лучше понять, в чем заключается проблема, и устранить причину.
Это может быть связано либо с:
пользовательский адрес репозитория, который не имеет правильного сертификата,
корпоративная сеть с прозрачным прокси.
Если вы работаете за корпоративным веб-прокси, вы должны установить правильные переменные
HTTP_PROXY
/HTTPS_PROXY
переменные среды или установить их с помощьюnpm
:Смотрите: Как настроить Node.js и Npm за корпоративным веб-прокси
Если вы доверяете хосту, вы можете экспортировать самоподписанный сертификат из цепочки и импортировать его в систему, чтобы они были помечены как доверенные.
Этого можно достичь, проверив сертификаты с помощью (перейдите
example.com
в репозиторий npm, который не работает на основанииnpm-debug.log
):затем сохраните содержимое сертификата (между
BEGIN
иEND
) в.crt
файл, чтобы импортировать его.Linux
Согласно предложению , вы можете добавить экспортированный сертификат в
/etc/environment
файл (Узел 7.4+), например:CentOS
На CentOS 5 это можно добавить в
/etc/pki/tls/certs/ca-bundle.crt
файл, напримерПримечание. Чтобы экспортировать только первый сертификат, удалите его
g
в начале.В CentOS 6 файл сертификата можно скопировать в
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
В Ubuntu / Debian скопируйте файл CRT в и
/usr/local/share/ca-certificates/
запустите:Macos
В macOS вы можете запустить:
Windows
В Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Смотрите также: npm - Устранение неполадок - Ошибка SSL
источник
Помещение этого до команды, кажется, работает
NODE_TLS_REJECT_UNAUTHORIZED=0
. например:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Было бы лучше выяснить, как заставить узел видеть самозаверяющий сертификат действительным. строгое предложение выше не работает для меня по некоторым причинам. Если вы понимаете последствия для безопасности и нуждаетесь во временном быстром исправлении, это то, что я обнаружил в некоторых случайных проблемах github во время поиска ошибки в Google.
источник
Хранилище больше не поддерживает самозаверяющие сертификаты. Вам нужно обновить
npm
.Вам необходимо открыть новый сеанс терминала, чтобы использовать обновленный
npm
.Источник: изначально это была редакция ответа jnylen . Хотя в руководящих указаниях говорится: «Мы приветствуем все конструктивные изменения, но, пожалуйста, сделайте их существенными», редактирование было отклонено из-за «Это изменение слишком сильно меняет исходное сообщение; первоначальное значение или намерение сообщения будут потеряны». Я предполагаю, что сообщество предпочитает отдельный ответ.
источник
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Для тех, кто на mac с той же проблемой и установил npm через homebrew :
затем
У меня работает на osx (10.9.1)
РЕДАКТИРОВАТЬ : Вам может понадобиться
brew update
перед установкой npm. Вы также можете сделатьbrew upgrade
после обновления доморощенного. Также может быть полезно запустить,brew doctor
если вы столкнетесь с любыми другими проблемами.источник
Быстрое и чистое решение (протестировано под Linux) (после усталости 27 февраля 2014 г.)
Удалить npm
Установите npm (новый URL-адрес www.npmjs.org вместо npmjs.org )
Совет : как установить node.js в Linux https://stackoverflow.com/a/22099363/333061
источник
https://www.npmjs.org/install.sh
в браузере и загрузить его, прежде чем запускать вручную.curl https://npmjs.org/install.sh
команда перенаправляетhttps://www.npmjs.org/install.sh
, поэтомуcurl https://www.npmjs.org/install.sh | sh
работает без проблем. теперь можно устанавливать маленький падаван. :)Удалите NPM и установите его снова.
С 27 февраля 2014 года npm больше не поддерживает свои подписанные сертификаты. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Ссылка выше предлагает обновить NPM с помощью NPM. Это также не удается с SELF_SIGNED_CERT_IN_CHAIN ...
источник
Отключение SSL кажется очень плохой идеей. Блог npm объясняет, что они больше не поддерживают свой самоподписанный сертификат. Они предлагают обновить npm через
npm install npm -g
, но я, конечно, получил ту же ошибку SELF_SIGNED_CERT_IN_CHAIN. Поэтому я только что обновил узел, который обновил npm вместе с ним. Точная процедура зависит от того, как вы установили узел в первую очередь.источник