Zum Inhalt springen
ecdsa.com
npm (Node.js)Paketmanager

Fehlermeldung

npm error code SELF_SIGNED_CERT_IN_CHAIN

Auch ausgegeben als

  • npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
  • npm error request to https://registry.example.com/lodash failed, reason: self-signed certificate in certificate chain

npm 10 und neuer geben „npm error code SELF_SIGNED_CERT_IN_CHAIN“ aus, npm 9 und älter „npm ERR! code SELF_SIGNED_CERT_IN_CHAIN“. Die nächsten Zeilen wiederholen den Code als errno und nennen die URL mit „reason: self-signed certificate in certificate chain“.

npm (Node.js) — registry request over HTTPS

Was der Fehler bedeutet

Über die Verbindung zur Registry kam eine Zertifikatskette, die bei einem selbstsignierten Root-Zertifikat endet, das Node.js nicht kennt. Bei registry.npmjs.org bedeutet das, dass der Traffic abgefangen und neu signiert wird, fast immer von einem Firmenproxy oder einem Antivirenprodukt mit HTTPS-Scan, dessen Root-Zertifikat der Browser vertraut, npm aber nicht.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    npm das Root-Zertifikat des Proxys per cafile geben

    Hol dir das Root-Zertifikat vom IT-Team oder exportiere es aus dem Trust Store des Betriebssystems, speichere es als PEM und setze es als cafile von npm. npm vertraut dann nur den CAs in dieser Datei; auf Laptops, die auch außerhalb des Firmennetzes arbeiten, nimm deshalb die öffentlichen Root-Zertifikate in dieselbe Datei auf oder verwende besser NODE_EXTRA_CA_CERTS.

    bash
    npm config set cafile /etc/ssl/private-ca/corp-proxy-root.pem
    npm install
  2. 2.

    Oder NODE_EXTRA_CA_CERTS setzen

    Fügt das Root-Zertifikat für npm und jedes andere Node.js-Tool hinzu, ohne die öffentlichen Root-Zertifikate von Node.js zu ersetzen. Unter Windows setze die Variable als Umgebungsvariable des Benutzers und öffne danach ein neues Terminal.

    bash
    # Windows (PowerShell): setx NODE_EXTRA_CA_CERTS C:\certs\corp-proxy-root.pem
    export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-proxy-root.pem
    npm install
  3. 3.

    Oder Node.js den Trust Store des Betriebssystems verwenden lassen

    NODE_USE_SYSTEM_CA=1 lässt Node.js (und npm) dem vertrauen, was das Betriebssystem als vertrauenswürdig einstuft; auf verwalteten Rechnern gehört dazu auch das Root-Zertifikat des Proxys.

    bash
    # Managed machines already trust the proxy root in the OS store
    NODE_USE_SYSTEM_CA=1 npm install
  4. 4.

    Vorübergehende Diagnose: --strict-ssl=false

    Nur um zu bestätigen, dass das Vertrauen das Problem ist. Pakete führen Installationsskripte aus; ungeprüfte Downloads zu akzeptieren ist genau der Weg, auf dem Supply-Chain-Angriffe auf Entwicklungsrechner gelangen. Trage strict-ssl=false niemals in die .npmrc ein.

    bash
    # Temporary diagnostic for one command only
    npm install --strict-ssl=false

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen