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

Fehlermeldung

npm error code ERR_TLS_CERT_ALTNAME_INVALID

Auch ausgegeben als

  • npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID
  • npm error request to https://registry.example.com/lodash failed, reason: Hostname/IP does not match certificate's altnames: Host: registry.example.com. is not in the cert's altnames: DNS:www.example.com

npm 10 und neuer geben „npm error code ERR_TLS_CERT_ALTNAME_INVALID“ aus, npm 9 und älter „npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID“. Host und altnames in der reason-Zeile stammen aus deiner Konfiguration und dem Zertifikat des Servers.

npm (Node.js) — registry request over HTTPS

Was der Fehler bedeutet

Das Zertifikat der Registry ist vertrauenswürdig, wurde aber nicht für den Hostnamen in der Registry-URL ausgestellt, die npm verwendet hat. Die reason-Zeile nennt beide Seiten: den Host, den npm angefragt hat, und die Namen, die das Zertifikat enthält. Typisch nach einem Umzug der Registry auf einen neuen Namen oder wenn die Registry-URL einen Alias, eine IP-Adresse oder die falsche Umgebung verwendet.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Registry-Einstellung von npm mit dem Zertifikat vergleichen

    Gib die konfigurierte Registry (und die Proxy-Einstellungen) sowie die SAN-Liste des Zertifikats aus. Auch Lockfiles enthalten aufgelöste URLs; sie müssen denselben Host verwenden.

    bash
    npm config get registry
    npm config list | grep -iE 'registry|proxy'
    echo | openssl s_client -connect registry.example.com:443 -servername registry.example.com 2>/dev/null \
      | openssl x509 -noout -ext subjectAltName
  2. 2.

    npm auf den Namen des Zertifikats umstellen

    Aktualisiere die Einstellung registry in jeder .npmrc-Ebene (und erzeuge Lockfiles neu, wenn sie den alten Host enthalten).

    bash
    # Use the host name the registry's certificate was issued for
    npm config set registry https://npm.example.com/
  3. 3.

    Für Betreiber der Registry: jeden verwendeten Namen abdecken

    Stelle das Zertifikat der Registry mit allen Hostnamen neu aus, die Clients verwenden, einschließlich der Aliasse, die aus Kompatibilitätsgründen erhalten bleiben.

    bash
    # Registry owners: include every name clients use
    sudo certbot certonly --nginx -d npm.example.com -d registry.example.com

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen