получение ошибки: "Ошибка: ошибка 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
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.// 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/yourCerts.pemCentOS
на 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-certificatesmacOS
в macOS вы можете запустить:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crtWindows
В 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