nodejs “npm ERR! Code SELF_SIGNED_CERT_IN_CHAIN ​​”


78

Ich bin neu bei nodejs und npm. Ich versuche log4js zu installieren und dies ist der Befehl für die Installation:

npm install log4js

Ich führe dies über die Windows-Befehlszeile aus und nach einer Weile, in der sich ein Marker dreht, wird der folgende Fehler angezeigt:

npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "log4js"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN

npm ERR! self signed certificate in certificate chain
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     C:\srv\npm-debug.log

Ich habe versucht, npm config set ca=""wie hier vorgeschlagen zu tun : http://blog.npmjs.org/post/78085451721/npms-self-signed-certificate-is-no-more, aber ich erhalte immer noch diesen Fehler.

Wie kann ich das lösen und NPMs installieren?



Ich hatte dieses Problem aufgrund eines korporativ installierten Produkts namens Websense. Es war die Entführung der Zertifikate. Entfernung des virusgelösten Problems
BozoJoe

Antworten:


177

Laut npm- Blog ist LTS von diesem Problem nicht betroffen. Verwenden Sie daher lieber die neueste Version.

In älteren Versionen verfügt npm über eine selbstsignierte ca-Datei, eine ca-Datei wird im sicheren SSL-Modus verwendet, während die Verbindung hergestellt wird, und die npm-Registrierung stellt ein aktualisiertes SSL-Zertifikat bereit

Dies ist nicht kompatibel mit der Ca-Datei älterer npm, daher der Verbindungsfehler aufgrund von SSL. Wenn Sie jedoch auf diesen Fehler stoßen, sollte Ihnen einer der folgenden Schritte helfen:
1) Aktualisieren Sie Ihre Version von npm

npm install npm -g --ca=null

2) Weisen Sie Ihre aktuelle Version von npm an, das ca des Knotens anstelle des eingebauten ca des npm zu verwenden.

npm config set ca=""


3) Sie können auch den strikten SSL-Modus deaktivieren, um den Fehler in der alten Version zu umgehen, aber Sie löschen die Sicherheit

npm set strict-ssl false


1
Sogar mein Problem gelöst. Alles was ich
brauche

@geoidesic Es hat in Docker-Datei für mich funktioniert. Versuchen Sie diesen Befehl mit RUN, bevor Sie npm installieren.
Deepak Tekchandani

1
Dies ist ein unsicherer Ansatz, der Sie für MITM-Angriffe anfällig macht. Die richtige Lösung besteht darin, die tatsächlich verwendeten Zertifikate zu finden und sie Ihrem npm-Café hinzuzufügen.
HA

3
Dies hat mein Problem behoben: npm set strict-ssl false
Tarun

1
@AkshayVijayJain meine npm Version ist 6.13.4
Tarun

51

Ich hatte das gleiche Problem unter Windows 10.

Öffnen Sie Windows PowerShell und geben Sie den folgenden Befehl ein:

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

Dann können Sie verwenden:

npm install [your package]

5
Dies sollte die akzeptierte Antwort sein. Das Setzen von strict-ssl auf false ist gefährlich. Vielen Dank für die Lösung dieser Kopfschmerzen.
Jarodtaylor

Ich erhalte immer noch diesen Fehlerbeitrag beim Ausführen dieses cmd.Help!
Manish Kumar

14

Ich bin auch neu bei npm. Neben den in Ihrem Link genannten Befehlen habe ich Folgendes versucht und meine Probleme behoben:

  • npm set strict-ssl false
  • McAfee vorübergehend deaktiviert

Referenz: Npm SELF_SIGNED_CERT_IN_CHAIN ​​in Azure


3
Das Deaktivieren von SSL sollte niemals die Antwort sein. Es muss eine Problemumgehung dafür geben ...
Andrew Landsverk

9
@ AndrewLandsverk ist es, wenn Sie hinter einer restriktiven Unternehmens-Firewall stehen.
Cloxure


4

Das Setzen von StrictSsl auf false ist zwar eine Option, gefährdet jedoch Ihre npm-Sicherheit. Ich empfehle, es nicht zu deaktivieren. Die folgenden Anweisungen erläutern Shreedhars Beitrag zur Verwendung der Cafile. Obwohl es aus der Perspektive eines Windows 10-Computers geschrieben wurde, kann es angepasst werden.

Unser Unternehmen verwendet SSL Inpsection über einen Proxy, daher müssen wir zumindest das SSL Inspection-Zertifikat beifügen. In den folgenden Anweisungen wird davon ausgegangen, dass Sie auf dem Computer, auf dem Sie eine extern erreichbare npm-Funktion verwenden möchten, einen modernen Webbrowser verwenden können.

  1. Führen Sie auf einer Befehlskonsole Folgendes aus: npm config list
  2. Notieren Sie den Wert für die Metrikregistrierung. Dies sollte eine URL sein.
  3. Öffnen Sie einen Browser für die URL. Zum Zeitpunkt des Schreibens dieser Antwort lautet sie https://registry.npmjs.org/
  4. Öffnen Sie die Zertifikatinformationen für die Site. Bei Chrome unter Windows müssen Sie dazu auf das Vorhängeschlosssymbol links neben der URL in der Adressleiste klicken und die Option Zertifikat auswählen .
  5. Überprüfen Sie den Zertifizierungspfad. Für mich gibt es unsere Unternehmenszertifizierungsstelle und unser SSL-Inspektionszertifikat.
  6. Laden Sie jedes Zertifikat als Base64 herunter, das in eine CER- oder CRT-Datei codiert ist.
  7. Kompilieren Sie alle Zertifikate wie sie sind in einer .cer- oder .crt-Datei.
  8. Legen Sie diese Datei in einem Benutzerordner ab. Obwohl wir einen netzwerkbasierten Benutzerordner haben, empfehle ich und verwende einen lokalen maschinenbasierten Ordner. Notieren Sie den vollständigen Pfad zu dieser Datei.
  9. Führen Sie auf einer Befehlskonsole Folgendes aus: npm config set cafile "C:\Local\Path\To\cafile4npm.cer"Ändern Sie den in Schritt 8 angegebenen Pfad und die Datei.
  10. Führen Sie Ihren npm installBefehl aus.

Ich habe noch nie Docker-Bilder verwendet, aber vielleicht kann ich helfen. Was sind die Details des Fehlers, den Sie erhalten?
Gregorian

Es gibt keine zusätzlichen Details. gleicher Fehler wie im Titel des OP.
Geoidesic

Wie mache ich diesen Teil? Laden Sie jedes Zertifikat als Base64 herunter, das in eine CER- oder CRT-Datei codiert ist. Wenn ich den Zertifizierungspfad öffne, gibt es keine Option zum Herunterladen? Muss richtig installiert werden? Mein Problem ist, dass in node_modules ein echtes vorzeichenloses Zertifikat vorhanden ist.
John Peters

Danke. Das Ausführen der npm-Konfigurationsliste ergab ein globales / usr / local / etc / npmrc mit einem cafile = ... -Eintrag, der meinen Tag ruinierte, bis ich diese Antwort fand. Danke.
HaVonTe

@JohnPeters Wenn Sie auf das Vorhängeschlosssymbol links neben der URL-Adressleiste klicken, sollte eine Option zum Anzeigen der Zertifikate vorhanden sein. In Windows 10 enthält das sich öffnende Fenster drei Registerkarten: Allgemein, Details und Zertifizierungspfad. Auf der Registerkarte Zertifizierungspfad werden alle Zertifikate zwischen Ihnen und dem Server angezeigt. Auf der Registerkarte Details können Sie die Datei herunterladen. Unter Windows 10 lautet die Schaltfläche In Datei kopieren ...
gregsonian

2

Haben Sie auch versucht, Einstellungen vorzunehmen, cafiledie alle Pems in einer Datei enthalten? npm Stammzertifizierungsstelle hinzufügen

Wenn Sie in Ihrer .npmrcDatei einen Proxy verwenden, empfehle ich, die no_proxyUmgebungsvariable mit dem Wert von your festzulegen<server IP address>


2

In CentOS und anderen Linux-Distributionen müssen Sie NPM für die Verwendung Ihrer Certificate Authorities-Datei konfigurieren:

npm config set cafile "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -g

Überprüfen Sie natürlich, ob die Datei vorhanden ist und alle CA-Roots enthält, auf die Sie möglicherweise stoßen (z. B. Corporate Proxy).



0

Ab dem 27. Februar 2014 unterstützt npm seine selbstsignierten Zertifikate nicht mehr . Die folgenden Optionen, wie von npm empfohlen, führen eine der folgenden Aktionen aus:

Aktualisieren Sie Ihre Version von npm

npm install npm -g --ca=""

-- ODER --

Teilen Sie Ihrer aktuellen Version von npm mit, dass bekannte Registrare verwendet werden sollen

npm config set ca ""

Update: npm hat mehr Hilfe mit SELF_SIGNED_CERT_IN_CHAIN ​​und npm mit mehr Lösungen für verschiedene Umgebungen veröffentlicht

Lesen Sie hier mehr


0

Keine der obigen Antworten hat meiner Situation geholfen. Es stellte sich heraus, dass der Schuldige die Paketagentenbasis vor 6.0.1 war. In der Tat gab der Eigentümer zu, selbstsignierte Zertifikate in einem Testordner seines Pakets versandt zu haben. Dies erzwang eine Neuinstallation von -D und -g, aber das Problem tritt immer noch auf.

Ich habe dieses Zertifikat gefunden, indem ich den Ordner node_modules nach * .pem durchsucht habe.

Ich arbeite immer noch daran, npm-Caches dazu zu bringen, mir zuzuhören. Natürlich bin ich der Dummy, oder?

Ich werde zusätzliche Ergebnisse zurückschicken.

Lösung gefunden

07.07.2020

Unsere Angular-Anwendung wurde heute von 8.3 auf 10.0 aktualisiert. Erraten Sie, was? Die Fehler verschwanden. Die Hauptursache war, dass jemand ein nicht signiertes Zertifikat veröffentlicht hat, das es viel zu tief in der NPM-Modulbibliothek gemacht hat. Sogar NPM 6.15 hatte es!


0

Ich habe hier viele Lösungen ausprobiert und keine hat wirklich für mich funktioniert. Ich habe versucht, npm zu aktualisieren, habe aber entweder eine Zeitüberschreitung (als die Registrierung auf http://registry.npmjs.org/ eingestellt war ) oder eine 403 Forbidden-Antwort (als die Registrierung auf http s : //registry.npmjs.org/ eingestellt war) erhalten.

Am Ende realsing , dass mein Problem , indem sie sich hinter einem Proxy verursacht wurde, was tat Arbeit für mich am Ende war:

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

(Gutschrift: https://stackoverflow.com/a/12832637/4191296 )


0

Sie können die Zertifikatsüberprüfung für TLS-Verbindungen deaktivieren:

NODE_TLS_REJECT_UNAUTHORIZED=0 npm install puppeteer


-1

Ich habe Knoten js und Angular Cli neu installiert. Es fing an zu funktionieren !!


1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz
bereitzustellen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.