Używam npm v1.0.104 / node 0.6.12 na Ubuntu - otrzymuję błąd skopiowany poniżej podczas próby instalacji jakichkolwiek nowych modułów przez npm (wcześniej testowałem socket.io używając http, nie https i zastanawiam się, czy to mogłoby spowodowały problem z certyfikatami npm / unsigned). Błąd pojawia się, gdy npm próbuje rozwiązać adres URL „ https://registry.npmjs.org ”. Czy w każdym razie mogę zignorować błąd lub zlokalizować / dodać certyfikat do zaufanego sklepu, aby kontynuować używanie npm.
Doceniony zostanie każdy wgląd w to, co należy zrobić, aby rozwiązać problem (wolałbym rozwiązać problem poprzez konfigurację, a nie ponowną instalację, jeśli to możliwe).
Błąd: „Błąd: błąd SSL: SELF_SIGNED_CERT_IN_CHAIN”
Pełna wiadomość:
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
node.js
ssl-certificate
npm
Ali Haider
źródło
źródło
Odpowiedzi:
Uruchomienie następujących pomogło rozwiązać problem:
Nie mogę komentować, czy w tym momencie spowoduje to jakiekolwiek inne problemy. Mam nadzieję, że to pomoże.
źródło
Od 27 lutego 2014 r. Npm nie obsługuje już certyfikatów z podpisem własnym .Następujące opcje, zgodnie z zaleceniami npm, to wykonanie jednej z następujących czynności:
Zaktualizuj swoją wersję npm
- LUB -
Poinformuj swoją obecną wersję npm, aby korzystała ze znanych rejestratorów
Aktualizacja: npm opublikował więcej pomocy dla SELF_SIGNED_CERT_IN_CHAIN i npm z większą ilością rozwiązań specyficznych dla różnych środowisk
Konieczne może być przygotowanie się
sudo
do zaleceń.Inne opcje
Wygląda na to, że ludzie mają problemy z używaniem rekomendacji npm, więc oto inne potencjalne rozwiązania.
Uaktualnij sam węzeł
Otrzymanie tego błędu może sugerować, że masz starszą wersję węzła, która naturalnie pochodzi ze starszej wersji npm. Jednym z rozwiązań jest aktualizacja wersji Node. Jest to prawdopodobnie najlepsza opcja, ponieważ aktualizuje i usuwa istniejące błędy i luki w zabezpieczeniach.
Ten proces zależy od tego, jak zainstalowałeś Węzeł, system operacyjny i inne.
Zaktualizuj npm
Ponieważ prawdopodobnie dotarłeś tutaj podczas próby
install
pakietu, możliwe, że wystąpinpm install npm -g
błąd z tym samym błędem. W takim przypadku użyjupdate
zamiast tego. Zgodnie z sugestią Nisantha Sojana:Zaktualizuj alternatywę npm
Jednym ze sposobów rozwiązania problemu jest użycie znanych rejestratorów, instalacja, a następnie zaprzestanie korzystania ze znanych rejestratorów. Zgodnie z sugestią jnylena:
źródło
npm config set ca ""
najpierw wykonaj aktualizację, a następnie cofnij zmianę konfiguracji. Zobacz: stackoverflow.com/a/22099006/106302sudo
zmienia użytkownika,-g
ustawia flagi, jeśli ma być instalowany globalnie dla tego użytkownika lub tylko lokalnienode_modules
.Na razie właśnie zmieniłem adres URL rejestru z https na http. Lubię to:
źródło
Aby zapisać go globalnie
źródło
cb() never called!
błąd npmMusisz zaktualizować npm.
Może być konieczne poprzedzenie tych poleceń znakiem
sudo
.Źródło: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
źródło
sudo
jest to w ogóle wymagane, a tylko prefiks polecenia upgradesudo
działał dobrze dla mnie. YMMV.Błąd
SELF_SIGNED_CERT_IN_CHAIN
oznacza, że masz samopodpisany certyfikat w łańcuchu certyfikatów, który zasadniczo nie jest zaufany przez system.Jeśli tak się stanie, dzieje się coś podejrzanego, dlatego, jak to już skomentowali ludzie, nie zaleca się wyłączania sprawdzania certyfikatów, ale lepszym rozwiązaniem jest zrozumienie problemu i usunięcie przyczyny.
Może to dotyczyć albo:
niestandardowy adres repozytorium, który nie ma odpowiedniego certyfikatu,
sieć korporacyjna z transparentnym proxy.
Jeśli jesteś za serwerem proxy WWW firmowej, należy ustawić się prawidłowego
HTTP_PROXY
/HTTPS_PROXY
zmienne środowiskowe lub ustawić je poprzeznpm
:Zobacz: Jak skonfigurować Node.js i Npm za korporacyjnym proxy sieciowym
Jeśli ufasz hostowi, możesz wyeksportować samopodpisany certyfikat z łańcucha i zaimportować go do systemu, aby były one oznaczone jako zaufane.
Można to osiągnąć sprawdzając certyfikaty przez (zmiana
example.com
na repozytorium npm, które kończy się niepowodzeniem na podstawienpm-debug.log
):następnie zapisz treść certyfikatu (pomiędzy
BEGIN
iEND
) do.crt
pliku, aby go zaimportować.Linux
Zgodnie z sugestią możesz dodać wyeksportowany certyfikat do
/etc/environment
pliku (Węzeł 7.4+), na przykład:CentOS
W CentOS 5 można to dołączyć do
/etc/pki/tls/certs/ca-bundle.crt
pliku, npUwaga: aby wyeksportować tylko pierwszy certyfikat, usuń
g
na początku.W CentOS 6 plik certyfikatu można skopiować
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
W Ubuntu / Debian skopiuj plik CRT,
/usr/local/share/ca-certificates/
a następnie uruchom:System operacyjny Mac
W macOS możesz uruchomić:
Windows
W systemie Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Zobacz też: npm - Rozwiązywanie problemów - Błąd SSL
źródło
Umieszczenie tego przed poleceniem wydaje się działać
NODE_TLS_REJECT_UNAUTHORIZED=0
. dawny:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Najlepiej byłoby dowiedzieć się, jak sprawić, aby węzeł widział samopodpisany certyfikat jako ważny. Powyższa sugestia strict-ssl nie działała dla mnie z jakiegoś powodu. Jeśli rozumiesz implikacje dla bezpieczeństwa i potrzebujesz tymczasowej szybkiej poprawki, to znalazłem w niektórych przypadkowych problemach z github podczas wyszukiwania błędu w Google.
źródło
Repozytorium nie obsługuje już certyfikatów z podpisem własnym. Musisz zaktualizować
npm
.Musisz otworzyć nową sesję terminala, aby skorzystać z zaktualizowanej
npm
.Źródło: pierwotnie była to edycja odpowiedzi Jnylena . Mimo że wytyczne mówią „Przyjmujemy z zadowoleniem wszystkie konstruktywne zmiany, ale prosimy o ich znaczne uzupełnienie”, edycja została odrzucona z powodu „Ta zmiana zmienia się zbytnio w oryginalnym poście; oryginalne znaczenie lub zamiar tego wpisu zostanie utracony”. Wydaje mi się, że społeczność woli osobną odpowiedź.
źródło
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Dla tych, którzy na komputerze Mac z tym samym problemem i zainstalowali npm przez homebrew :
następnie
Działa dla mnie na OSX (10.9.1)
EDYCJA : Może być konieczne
brew update
przed zainstalowaniem npm. Możesz także zrobićbrew upgrade
po aktualizacji homebrew. Pomocne może być również uruchomienie,brew doctor
jeśli napotkasz jakiekolwiek inne problemy.źródło
Szybkie i czyste rozwiązanie (testowane pod Linuksem) (po fatidic 27 lutego 2014)
Odinstaluj npm
Zainstaluj npm (nowy adres URL to www.npmjs.org zamiast npmjs.org )
Wskazówka : jak zainstalować node.js w systemie Linux https://stackoverflow.com/a/22099363/333061
źródło
https://www.npmjs.org/install.sh
w przeglądarce i pobierać je przed uruchomieniem ręcznie.curl https://npmjs.org/install.sh
polecenie przekierowuje dohttps://www.npmjs.org/install.sh
właśnie dlategocurl https://www.npmjs.org/install.sh | sh
działa bezproblemowo. jest OK, aby zainstalować od teraz na małym padawan. :)Odinstaluj NPM i zainstaluj go ponownie.
Od 27 lutego 2014 r. Npm nie obsługuje już certyfikatów z podpisem własnym. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Powyższy link sugeruje aktualizację NPM za pomocą NPM. To również kończy się niepowodzeniem w przypadku SELF_SIGNED_CERT_IN_CHAIN ...
źródło
Wyłączenie SSL wydaje się bardzo złym pomysłem. Blog npm wyjaśnia, że nie obsługują już samopodpisanego certyfikatu. Sugerują aktualizację npm przez
npm install npm -g
, ale oczywiście dostałem ten sam błąd SELF_SIGNED_CERT_IN_CHAIN. Właśnie zaktualizowałem węzeł, który wraz z nim zaktualizował npm. Dokładna procedura zależy przede wszystkim od sposobu zainstalowania węzła.źródło