получение ошибки: "Ошибка: ошибка SSL: САМОЗАВЕРЯЮЩИЙ сертификат в цепочке" при использовании npm



Я использую npm v1. 0. 104 / node 0.6.12 на ubuntu - я получаю ошибку, скопированную ниже при попытке установить любые новые модули через npm (я тестировал socket.io ранее используя http, а не https, хотя и интересно, могло ли это привести к проблеме с npm/unsigned certs). Ошибка появляется, как только npm пытается решить 'https://registry.npmjs.org' URL. Есть ли в любом случае я могу игнорировать ошибку или, возможно, найти / добавить сертификат в доверенное хранилище, чтобы продолжить с помощью 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! <[email protected]>
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
1805   12  

12 ответов:

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

npm config set strict-ssl false

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

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

обновите свою версию npm

npm install npm -g --ca=""

-- или --

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

npm config set ca ""

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



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

другие функции

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

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

процесс здесь зависит от того, как вы установили узел, ваша операционная система, и в противном случае.

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

npm update npm -g

обновить НПМ альтернатива
Один из способов обойти эту проблему-использовать известных регистраторов, установить и затем прекратить использование известных регистраторов. Как предложил jnylen:

npm config set ca ""
npm install npm -g
npm config delete ca

сейчас я просто переключил url реестра с https на http. Вот так:

npm config set registry="http://registry.npmjs.org/"

вам нужно обновить 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

npm config set strict-ssl false -g

сохранить его в мире

репозиторий больше не поддерживает самозаверяющие сертификаты. Вам нужно обновить 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'ы ответ. Хотя в руководстве сказано "мы приветствуем все конструктивные изменения, но, пожалуйста, сделайте их существенными", редактирование было отклонено из-за " это редактирование слишком сильно меняется оригинальный пост; первоначальный смысл или намерение поста будут потеряны." Я думаю, что сообщество предпочитает отдельный ответ.

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

brew uninstall npm

затем

brew install npm

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

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

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

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

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

  • custom адрес репозитория, который не имеет правильного сертификата,

  • корпоративную сеть с прозрачным прокси.

    если вы находитесь за корпоративным веб-прокси, вы должны указать правильный HTTP_PROXY/HTTPS_PROXY переменные окружения или установить их через npm:

    npm config set proxy http://proxy.company.com:8080
    npm config set https-proxy http://proxy.company.com:8080
    

    посмотреть: как настроить узел.js и Npm за корпоративным веб-прокси

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

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

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

сохраните содержимое сертификата (между BEGIN и END) в для того, чтобы импортировать его.

Linux

по состоянию на предложение, вы можете добавить экспортированный сертификат в (узел 7.4+), например:

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

CentOS

на CentOS 5 Это можно добавить в , например,

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

быстрое и чистое решение (linux протестировано) (после fatidic 27 февраля 2014 года)


удалить npm

npm rm npm -g

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

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

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

удалите 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 install npm -g, но я, конечно, получил ту же ошибку SELF_SIGNED_CERT_IN_CHAIN. Поэтому я просто обновил узел, который обновил npm вместе с ним. Точная процедура зависит от того, как вы установили узел в первую очередь.

пожалуйста, проверьте подключение к интернету и убедитесь, что он работает. убедитесь, что узел и npm установлены и запустите следующую команду в командной строке

npm uninstall-g @angular / cli

npm cache clean

npm install-g @angular / cli@latest

Comments

    Ничего не найдено.