Ich verwende npm v1.0.104 / node 0.6.12 unter Ubuntu. Beim Versuch, neue Module über npm zu installieren, wird der unten kopierte Fehler angezeigt haben zu einem Problem mit npm / nicht signierten Zertifikaten geführt). Der Fehler wird angezeigt, sobald npm versucht, die URL " https://registry.npmjs.org " aufzulösen . Gibt es sowieso ich kann den Fehler ignorieren oder vielleicht das Zertifikat zu einem vertrauenswürdigen Speicher suchen / hinzufügen, um weiterhin npm zu verwenden.
Jeder Einblick in die Maßnahmen zur Behebung des Problems wird geschätzt (ich würde es vorziehen, das Problem durch Konfiguration zu beheben, anstatt es nach Möglichkeit neu zu installieren).
Fehler: "Fehler: SSL-Fehler: SELF_SIGNED_CERT_IN_CHAIN"
Vollständige Nachricht:
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
quelle
Antworten:
Durch Ausführen der folgenden Schritte konnte das Problem behoben werden:
Ich kann nicht kommentieren, ob dies zu diesem Zeitpunkt andere Probleme verursachen wird. Ich hoffe es hilft.
quelle
Ab dem 27. Februar 2014 unterstützt npm seine selbstsignierten Zertifikate nicht mehr . Die folgenden von npm empfohlenen Optionen führen eine der folgenden Aktionen aus:
Aktualisieren Sie Ihre Version von npm
-- ODER --
Teilen Sie Ihrer aktuellen Version von npm mit, dass bekannte Registrare verwendet werden sollen
Update: npm hat mehr Hilfe mit SELF_SIGNED_CERT_IN_CHAIN und npm mit mehr Lösungen für verschiedene Umgebungen veröffentlicht
Möglicherweise müssen Sie
sudo
den Empfehlungen vorangestellt werden oder nicht .Andere Optionen
Es scheint, dass Menschen Probleme haben, die Empfehlungen von npm zu verwenden. Hier sind einige andere mögliche Lösungen.
Aktualisieren des Knotens selbst
Wenn Sie diesen Fehler erhalten, wird möglicherweise eine ältere Version des Knotens angezeigt, die natürlich mit einer älteren Version von npm geliefert wird. Eine Lösung besteht darin, Ihre Node-Version zu aktualisieren. Dies ist wahrscheinlich die beste Option, da sie Sie auf den neuesten Stand bringt und vorhandene Fehler und Schwachstellen behebt.
Der Vorgang hier hängt davon ab, wie Sie Node, Ihr Betriebssystem und andere Komponenten installiert haben.
Update npm
Da Sie wahrscheinlich beim Versuch
install
eines Pakets hierher gekommen sind , ist es möglich, dass diesnpm install npm -g
mit demselben Fehler fehlschlägt. Wenn dies der Fall ist, verwenden Sieupdate
stattdessen. Wie von Nisanth Sojan vorgeschlagen:Npm-Alternative aktualisieren
Eine Möglichkeit, das zugrunde liegende Problem zu umgehen, besteht darin, bekannte Registrare zu verwenden, zu installieren und dann die Verwendung bekannter Registrare zu beenden. Wie von jnylen vorgeschlagen:
quelle
npm config set ca ""
zuerst ein Upgrade durch und machen Sie dann die Konfigurationsänderung rückgängig. Siehe: stackoverflow.com/a/22099006/106302sudo
ändert den Benutzer. Das-g
Flag setzt, ob es für diesen Benutzer global oder nur lokal installiert werden sollnode_modules
.Im Moment habe ich gerade die Registrierungs-URL von https auf http umgestellt. So was:
quelle
Um es global zu speichern
quelle
cb() never called!
npm-FehlerSie müssen npm aktualisieren.
Möglicherweise müssen Sie diesen Befehlen ein Präfix voranstellen
sudo
.Quelle: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
quelle
sudo
dies überhaupt erforderlich ist, und nur das Präfixieren des Upgrade-Befehls mitsudo
hat für mich gut funktioniert. YMMV.Der Fehler
SELF_SIGNED_CERT_IN_CHAIN
bedeutet, dass Sie ein selbstsigniertes Zertifikat in der Zertifikatkette haben, dem das System grundsätzlich nicht vertraut.In diesem Fall ist im Grunde genommen etwas faul, daher wird, wie bereits erwähnt, nicht empfohlen, nur die Zertifikatsprüfungen zu deaktivieren, sondern besser zu verstehen, wo das Problem liegt, und die Ursache dafür zu beheben.
Dies kann entweder zusammenhängen mit:
benutzerdefinierte Repository-Adresse, die nicht über das richtige Zertifikat verfügt,
ein Unternehmensnetzwerk mit transparentem Proxy.
Wenn Sie sich hinter einem Unternehmens-Webproxy befinden, sollten Sie die richtigen
HTTP_PROXY
/HTTPS_PROXY
Umgebungsvariablen einrichten oder über Folgendes festlegennpm
:Siehe: Einrichten von Node.js und Npm hinter einem Unternehmens-Webproxy
Wenn Sie dem Host vertrauen, können Sie das selbstsignierte Zertifikat aus der Kette exportieren und in das System importieren, sodass sie als vertrauenswürdig markiert sind.
Dies kann erreicht werden, indem die Zertifikate überprüft werden durch (Wechsel
example.com
in npm repo, das aufgrund der fehlschlägtnpm-debug.log
):Speichern Sie dann den Zertifikatinhalt (zwischen
BEGIN
undEND
) in einer.crt
Datei, um ihn zu importieren.Linux
Gemäß Vorschlag , können Sie exportierte Zertifikat in hinzufügen
/etc/environment
Datei (Knoten 7.4+), wie:CentOS
Unter CentOS 5 kann dies in eine
/etc/pki/tls/certs/ca-bundle.crt
Datei eingefügt werden, zHinweis: Um nur das erste Zertifikat zu exportieren, entfernen Sie es
g
am Anfang.In CentOS 6 kann die Zertifikatdatei in kopiert werden
/etc/pki/ca-trust/source/anchors/
.Ubuntu / Debian
Kopieren Sie in Ubuntu / Debian die CRT-Datei in
/usr/local/share/ca-certificates/
und führen Sie sie aus:Mac OS
In macOS können Sie Folgendes ausführen:
Windows
In Windows:
certutil -addstore -f "ROOT" new-root-certificate.crt
Siehe auch: npm - Fehlerbehebung - SSL-Fehler
quelle
Dies vor den Befehl zu stellen scheint zu funktionieren
NODE_TLS_REJECT_UNAUTHORIZED=0
. Ex:NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...
Es ist am besten herauszufinden, wie der Knoten das selbstsignierte Zertifikat als gültig ansieht. Der obige strikte SSL-Vorschlag hat aus irgendeinem Grund bei mir nicht funktioniert. Wenn Sie die Auswirkungen auf die Sicherheit verstehen und eine vorübergehende schnelle Lösung benötigen, habe ich dies bei einigen zufälligen Github-Problemen während der Google-Suche nach dem Fehler festgestellt .
quelle
Das Repository unterstützt keine selbstsignierten Zertifikate mehr. Sie müssen ein Upgrade durchführen
npm
.Sie müssen eine neue Terminalsitzung öffnen, um die aktualisierte verwenden zu können
npm
.Quelle: Dies war ursprünglich eine Bearbeitung von jnylens Antwort. Obwohl in den Richtlinien steht: "Wir begrüßen alle konstruktiven Änderungen, aber machen Sie sie bitte erheblich", wurde die Bearbeitung aufgrund von "Diese Änderung ändert sich im ursprünglichen Beitrag zu stark; die ursprüngliche Bedeutung oder Absicht des Beitrags würde verloren gehen." Ich denke, die Community bevorzugt eine separate Antwort.
quelle
sudo ln -s /usr/bin/nodejs /usr/bin/node
.Für diejenigen, die auf einem Mac mit dem gleichen Problem npm über Homebrew installiert haben :
dann
Funktioniert für mich unter osx (10.9.1)
BEARBEITEN : Möglicherweise müssen Sie
brew update
vor der Installation von npm. Sie können auch einebrew upgrade
nach dem Update Homebrew durchführen. Es kann auch hilfreich sein, es auszuführen,brew doctor
wenn Sie auf andere Probleme stoßen.quelle
Schnelle und saubere Lösung (Linux getestet) (Nach Fatidic 27. Februar 2014)
Deinstallieren Sie npm
Installieren Sie npm (neue URL lautet www.npmjs.org statt npmjs.org )
Tipp : So installieren Sie node.js unter Linux https://stackoverflow.com/a/22099363/333061
quelle
https://www.npmjs.org/install.sh
Ihren Browser eingeben und herunterladen, bevor Sie ihn manuell ausführen.curl https://npmjs.org/install.sh
Befehl leitet umhttps://www.npmjs.org/install.sh
, weshalb diescurl https://www.npmjs.org/install.sh | sh
nahtlos funktioniert. ist in Ordnung, ab sofort auf kleinen Padawan zu installieren. :)Deinstallieren Sie NPM und installieren Sie es erneut.
Ab dem 27. Februar 2014 unterstützt npm seine selbstsignierten Zertifikate nicht mehr. http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more
Der obige Link schlägt vor, NPM mithilfe von NPM zu aktualisieren. Dies schlägt auch mit SELF_SIGNED_CERT_IN_CHAIN fehl ...
quelle
Das Deaktivieren von SSL scheint eine zutiefst schlechte Idee zu sein. Der Blog von npm erklärt, dass sie ihr selbstsigniertes Zertifikat nicht mehr unterstützen. Sie schlagen vor, npm über zu aktualisieren
npm install npm -g
, aber ich habe natürlich den gleichen SELF_SIGNED_CERT_IN_CHAIN-Fehler. Also habe ich gerade den Knoten aktualisiert, der npm zusammen mit ihm aktualisiert hat. Die genaue Vorgehensweise hängt davon ab, wie Sie den Knoten zuerst installiert haben.quelle