wake-up-neo.net

empfangsfehler: 'Fehler: SSL-Fehler: SELF_SIGNED_CERT_IN_CHAIN' während der Verwendung von npm

Ich verwende npm v1.0.104/node 0.6.12 auf ubuntu - Ich erhalte den unten kopierten Fehler, während ich versuche, irgendwelche neuen Module über npm zu installieren (früher habe ich socket.io mit http getestet, nicht mit https, obwohl dies der Fall ist in der Ausgabe mit npm/unsignierten Zertifikaten geführt) Der Fehler wird angezeigt, sobald npm versucht, die URL ' https://registry.npmjs.org ' aufzulösen. Gibt es sowieso kann ich den Fehler ignorieren oder das cert in einem Trusted Store lokalisieren/hinzufügen, um npm weiter zu verwenden. 

Jegliche Einsicht darüber, was zur Behebung des Problems getan werden muss, wird gewürdigt (ich würde es vorziehen, das Problem durch die Konfiguration zu lösen, anstatt es nach Möglichkeit erneut 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!     <[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
229
ali haider

Das folgende Problem half, das Problem zu beheben:

npm config set strict-ssl false

Ich kann nicht kommentieren, ob dies zu diesem Zeitpunkt andere Probleme verursachen wird. Ich hoffe es hilft.

291
ali haider

Seit dem 27. Februar 2014 unterstützt npm unterstützt keine selbstsignierten Zertifikate mehr . Mit den folgenden von npm empfohlenen Optionen können Sie eine der folgenden Aktionen ausführen:

Aktualisieren Sie Ihre Version von npm.

npm install npm -g --ca=""

- OR -

Teilen Sie Ihrer aktuellen Version von npm mit, dass Sie bekannte Registrare verwenden.

npm config set ca ""

Update: npm hat Weitere Hilfe bei SELF_SIGNED_CERT_IN_CHAIN ​​und npm mit mehr Lösungen für verschiedene Umgebungen bereitgestellt



Möglicherweise müssen Sie den Empfehlungen Sudo nicht voranstellen.


Andere Optionen

Es scheint, dass die Leute Probleme mit den Empfehlungen von npm haben, hier sind einige andere mögliche Lösungen.

Upgrade-Knoten selbst
Wenn Sie diesen Fehler erhalten, kann dies bedeuten, dass Sie eine ältere Version von node haben, die natürlich mit einer älteren Version von npm geliefert wird. Eine Lösung ist das Upgrade Ihrer Node-Version. Dies ist wahrscheinlich die beste Option, da Sie auf den neuesten Stand gebracht werden und bestehende Fehler und Schwachstellen behoben werden.

Der Vorgang hier hängt davon ab, wie Sie Node, Ihr Betriebssystem usw. installiert haben.

Update npm
Wenn Sie versucht haben, ein Paket zu install zu bekommen, ist es möglich, dass npm install npm -g mit dem gleichen Fehler fehlschlägt. Wenn dies der Fall ist, verwenden Sie stattdessen update. Wie von Nisanth Sojan vorgeschlagen:

npm update npm -g

Npm alternative aktualisieren
.__ Eine Möglichkeit, das zugrunde liegende Problem zu umgehen, besteht darin, bekannte Registrare zu verwenden, zu installieren und bekannte Registrare nicht mehr zu verwenden. Wie von jnylen vorgeschlagen:

npm config set ca ""
npm install npm -g
npm config delete ca
209
Kevin Reilly

Fürs Erste habe ich die Registrierungs-URL von https auf http umgestellt. So was:

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

Sie müssen npm aktualisieren.

// 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

Möglicherweise müssen Sie diesen Befehlen Sudo voranstellen.

Quelle: http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more

30
jnylen
npm config set strict-ssl false -g

Um es global zu speichern 

28
Robin

Der Fehler SELF_SIGNED_CERT_IN_CHAIN bedeutet, dass Sie über ein selbstsigniertes Zertifikat in der Zertifikatskette verfügen, dem das System grundsätzlich nicht vertraut.

Wenn dies passiert, ist im Grunde etwas Fischartiges vor sich. Daher wird, wie bereits kommentiert, nicht empfohlen, die Zertifikatsprüfungen einfach zu deaktivieren. Besser ist jedoch, zu verstehen, was das Problem ist, und die Ursache dafür zu beheben.

Dies kann sich entweder auf Folgendes beziehen:

  • 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 entsprechenden Umgebungsvariablen für HTTP_PROXY/HTTPS_PROXY einrichten oder diese über npm einstellen:

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

    Siehe: So richten Sie Node.js und Npm hinter einem Webproxy eines Unternehmens ein

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 gekennzeichnet werden.

Dies kann erreicht werden, indem die Zertifikate überprüft werden (ändern Sie example.com in npm repo, was aufgrund des npm-debug.log fehlschlägt):

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

speichern Sie anschließend den Inhalt des Zertifikats (zwischen BEGIN und END) in .crt-Datei, um ihn zu importieren.

Linux

Gemäß Vorschlag können Sie ein exportiertes Zertifikat in die /etc/environment-Datei (Node 7.4+) hinzufügen, z.

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

CentOS

Bei CentOS 5 kann dies in /etc/pki/tls/certs/ca-bundle.crt-Datei angehängt werden, z.

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

Hinweis: Um nur das erste Zertifikat zu exportieren, entfernen Sie am Anfang g.

In CentOS 6 kann die Zertifikatsdatei nach /etc/pki/ca-trust/source/anchors/ kopiert werden.

Ubuntu/Debian

Kopieren Sie die CRT-Datei in Ubuntu/Debian in /usr/local/share/ca-certificates/ und führen Sie dann Folgendes aus:

Sudo update-ca-certificates

mac OS

In macOS können Sie Folgendes ausführen:

Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/foo.crt

Windows

In Windows: certutil -addstore -f "ROOT" new-root-certificate.crt


Siehe auch: npm - Fehlerbehebung - SSL-Fehler

9
kenorb

Das Repository unterstützt keine selbstsignierten Zertifikate mehr. Sie müssen npm aktualisieren.

// 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

Sie müssen eine neue Terminalsitzung öffnen, um die aktualisierte npm verwenden zu können.

Quelle: Dies war ursprünglich eine Bearbeitung der Antwort von jnylen . Die Richtlinien sagen zwar "Wir begrüßen alle konstruktiven Bearbeitungen, machen sie aber bitte substantiell" Die Bearbeitung wurde aufgrund von "abgelehnt" "Diese Bearbeitung ändert sich im ursprünglichen Beitrag zu sehr; die ursprüngliche Bedeutung oder Absicht des Beitrags würde dies bedeuten verloren sein." Ich denke, die Community zieht eine separate Antwort vor.

8
Redsandro

Für diejenigen, die auf einem mac mit dem gleichen Problem installiert und npm über homebrew installiert haben: 

brew uninstall npm

dann

brew install npm

Funktioniert für mich unter osx (10.9.1)

EDIT: Möglicherweise müssen Sie brew update vor der Installation von npm installieren. Sie können auch einen brew upgrade ausführen, nachdem Sie die Homebrew aktualisiert haben. Es kann auch hilfreich sein, brew doctor auszuführen, wenn andere Probleme auftreten. 

7
Patrick

Schnelle und saubere Lösung (Linux getestet) (After fatidic 27. Februar 2014)


Npm deinstallieren

npm rm npm -g

Install npm (neue URL lautet www.npmjs.org statt npmjs.org)

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

Tip: Wie installiere node.js in linux https://stackoverflow.com/a/22099363/333061

3
Igor Parra

Deinstallieren Sie NPM und installieren Sie es erneut.

Ab 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 Link oben schlägt vor, NPM mit NPM zu aktualisieren. Dies schlägt auch mit SELF_SIGNED_CERT_IN_CHAIN ​​fehl ...

2
Florian Winter

Das Deaktivieren von SSL scheint eine äußerst schlechte Idee zu sein. npm's Blog erklärt, dass sie ihr selbst signiertes Zertifikat nicht mehr unterstützen. Sie schlagen vor, npm über npm install npm -g zu aktualisieren, aber ich habe natürlich den gleichen SELF_SIGNED_CERT_IN_CHAIN-Fehler erhalten. Also habe ich gerade den Knoten aktualisiert, der npm damit aktualisiert hat. Die genaue Vorgehensweise hängt davon ab, wie Sie den Knoten zuerst installiert haben.

1
Jeremiah Orr

Dies vor dem Befehl zu setzen, scheint zu funktionieren NODE_TLS_REJECT_UNAUTHORIZED=0. Ex: NODE_TLS_REJECT_UNAUTHORIZED=0 npm ...

Es empfiehlt sich, herauszufinden, wie der Knoten das selbstsignierte Zertifikat als gültig erachtet. Der obige strikte-ssl-Vorschlag hat aus irgendeinem Grund nicht funktioniert. Wenn Sie die Auswirkungen auf die Sicherheit verstehen und eine vorübergehende schnelle Lösung benötigen, habe ich dies bei einigen random-Github-Problemen bei der Google-Suche nach dem Fehler festgestellt. 

0
Adam Lane