423 Stimmen

Empfangsfehler: 'Fehler: SSL Fehler: SELF_SIGNED_CERT_IN_CHAIN' bei der Verwendung von npm

Ich verwende npm v1.0.104/node 0.6.12 auf Ubuntu - ich erhalte die unten kopierte Fehlermeldung, wenn ich versuche, neue Module über npm zu installieren (ich habe socket.io früher mit http, nicht https getestet und frage mich, ob das zu dem Problem mit npm/unsigned certs geführt haben könnte). Der Fehler taucht auf, sobald npm versucht, die ' https://registry.npmjs.org ' URL. Gibt es eine Möglichkeit, den Fehler zu ignorieren oder das Zertifikat zu einem vertrauenswürdigen Speicher hinzuzufügen, um npm weiter verwenden zu können?

Ich wäre dankbar für jeden Hinweis darauf, was zu tun ist, um das Problem zu lösen (ich würde es vorziehen, das Problem durch Konfiguration zu lösen, anstatt es neu zu installieren, wenn möglich).

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

614voto

ali haider Punkte 18328

Die folgenden Schritte haben das Problem behoben:

npm config set strict-ssl false

Ich kann zum jetzigen Zeitpunkt nicht sagen, ob dies weitere Probleme verursachen wird.

241voto

Kevin Reilly Punkte 5878

Stand: 27. Februar 2014, npm unterstützt seine selbstsignierten Zertifikate nicht mehr . Die folgenden Optionen, wie von npm empfohlen, ist, eine der folgenden zu tun:

Aktualisieren Sie Ihre Version von npm

npm install npm -g --ca=""

-- ODER --

Weisen Sie Ihre aktuelle Version von npm an, bekannte Registrare zu verwenden

npm config set ca ""

Aktualisierung: npm hat veröffentlicht Mehr Hilfe mit SELF_SIGNED_CERT_IN_CHAIN und npm mit mehr spezifischen Lösungen für unterschiedliche Umgebungen


Es kann sein, dass Sie Folgendes voranzustellen brauchen sudo zu den Empfehlungen.


Andere Optionen

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

Upgrade des Knotens selbst
Dieser Fehler kann darauf hindeuten, dass Sie eine ältere Version von Node haben, die natürlich mit einer älteren Version von npm einhergeht. Eine Lösung besteht darin, die Version von Node zu aktualisieren. Dies ist wahrscheinlich die beste Option, da es Sie auf den neuesten Stand bringt und vorhandene Fehler und Schwachstellen behebt.

Der Prozess hängt davon ab, wie Sie Node installiert haben, von Ihrem Betriebssystem und von anderen Faktoren.

npm aktualisieren
Da Sie wahrscheinlich hierher gekommen sind, während Sie versucht haben install ein Paket, ist es möglich, dass npm install npm -g kann mit demselben Fehler fehlschlagen. Wenn dies der Fall ist, verwenden Sie update stattdessen. Wie von Nisanth Sojan vorgeschlagen:

npm update npm -g

npm-Alternative aktualisieren
Eine Möglichkeit, das zugrundeliegende Problem zu umgehen, besteht darin, bekannte Registrierstellen zu verwenden, zu installieren und dann die Verwendung bekannter Registrierstellen einzustellen. Wie von jnylen vorgeschlagen:

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

80voto

Hermann Punkte 1126

Im Moment habe ich nur die URL der Registrierung von https auf http umgestellt. Etwa so:

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

53voto

kenorb Punkte 134883

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

Wie bereits erwähnt, ist es daher nicht empfehlenswert, die Zertifikatsprüfungen einfach zu deaktivieren, sondern es ist besser, das Problem zu verstehen und die Ursache zu beheben.

Dies kann entweder damit zusammenhängen:

  • benutzerdefinierte Repository-Adresse, die nicht über das richtige Zertifikat verfügt,

  • ein Unternehmensnetz mit transparentem Proxy.

    Wenn Sie sich hinter einem Firmen-Webproxy befinden, sollten Sie die entsprechenden HTTP_PROXY / HTTPS_PROXY Umgebungsvariablen oder setzen Sie sie über npm :

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

    Siehe: Wie man Node.js und Npm hinter einem Firmen-Webproxy einrichtet

Wenn Sie dem Host vertrauen, können Sie das selbstsignierte Zertifikat aus der Kette exportieren und in das System importieren, so dass es als vertrauenswürdig gekennzeichnet ist.

Dies kann erreicht werden, indem die Zertifikate durch (change example.com in das npm-Repo, das aufgrund der npm-debug.log ):

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

und speichern Sie den Inhalt des Zertifikats (zwischen BEGIN y END ) in .crt Datei, um sie zu importieren.

Linux

Gemäß Anregung können Sie den folgenden Text in die Datei /etc/environment Datei (Node 7.4+), um Ihre CA-Kette zu exportieren, etwa so:

NODE_EXTRA_CA_CERTS=/etc/pki/ca-trust/source/anchors/yourCerts.pem

CentOS

Unter CentOS 5 kann dies in /etc/pki/tls/certs/ca-bundle.crt Datei, z.B.

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 g am Anfang.

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

Ubuntu/Debian

Unter Ubuntu/Debian kopieren Sie die CRT-Datei nach /usr/local/share/ca-certificates/ dann laufen:

sudo update-ca-certificates

macOS

Unter macOS können Sie es ausführen:

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

Windows

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


Siehe auch: npm - Fehlersuche - SSL-Fehler

50voto

Robin Punkte 6259
npm config set strict-ssl false -g

Um sie global zu speichern

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X