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

Fehlermeldung

npm error code CERT_HAS_EXPIRED

Auch ausgegeben als

  • npm ERR! code CERT_HAS_EXPIRED
  • npm error request to https://registry.example.com/lodash failed, reason: certificate has expired

npm 10 und neuer geben „npm error code CERT_HAS_EXPIRED“ aus, npm 9 und älter „npm ERR! code CERT_HAS_EXPIRED“. Die folgenden Zeilen nennen die URL mit „reason: certificate has expired“.

npm (Node.js) — registry request over HTTPS

Was der Fehler bedeutet

Ein Zertifikat in der Kette, die npm von der Registry (oder von einem Proxy dazwischen) erhalten hat, hat nach der Uhr dieses Rechners sein Ablaufdatum überschritten. Bei der öffentlichen Registry heißt das fast nie, dass das Zertifikat von npm selbst abgelaufen ist: Es deutet auf eine alte CA, die in deiner npm-Konfiguration fest eingetragen ist, eine veraltete Root-Liste von Node.js, ein Proxy-Zertifikat oder eine falsch gehende Uhr hin. Bei privaten Registrys kann das Zertifikat des Servers tatsächlich abgelaufen sein.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Prüfen, welche Registry und welches Zertifikat betroffen sind

    Lies die konfigurierte Registry und das Ablaufdatum des Zertifikats aus, das sie ausliefert. Ein abgelaufenes Zertifikat einer privaten Registry muss auf dem Server erneuert werden.

    bash
    npm config get registry
    echo | openssl s_client -connect registry.example.com:443 -servername registry.example.com 2>/dev/null \
      | openssl x509 -noout -subject -enddate
  2. 2.

    Veraltete Einstellungen ca oder cafile entfernen

    npm config list zeigt die Einstellungen aus jeder .npmrc-Ebene; lösche Einträge ca oder cafile, die auf alte Zertifikate zeigen (oder aktualisiere die Datei, auf die sie verweisen).

    bash
    # An old CA pinned in .npmrc replaces the default roots: list and remove it
    npm config list | grep -E '^;? *(ca|cafile)'
    npm config delete ca
    npm config delete cafile
  3. 3.

    Node.js und npm aktualisieren

    Ein gepflegtes Node.js-Release bringt eine aktuelle Root-Liste mit; aktualisiere npm danach.

    bash
    node -v && npm -v   # Node.js bundles its root list; very old releases carry expired roots
    # upgrade Node.js to a maintained release (nvm, fnm, volta or your OS packages), then:
    npm install -g npm@latest

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen