Aller au contenu
ecdsa.com
npm (Node.js)Gestionnaires de paquets

Message d’erreur

npm error code ERR_TLS_CERT_ALTNAME_INVALID

Également affiché sous la forme

  • 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 et les versions ultérieures affichent « npm error code ERR_TLS_CERT_ALTNAME_INVALID », npm 9 et les versions antérieures « npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID ». L’hôte et les altnames de la ligne de raison proviennent de votre configuration et du certificat du serveur.

npm (Node.js) — registry request over HTTPS

Ce que cela signifie

Le certificat du registre est approuvé, mais il n’a pas été émis pour le nom d’hôte figurant dans l’URL du registre utilisée par npm. La ligne de raison détaille les deux côtés : l’hôte demandé par npm et les noms que contient le certificat. C’est typique après le passage d’un registre à un nouveau nom, ou lorsque l’URL du registre utilise un alias, une adresse IP ou le mauvais environnement.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Comparer le paramètre de registre de npm avec le certificat

    Affichez le registre configuré (et les paramètres de proxy) ainsi que la liste SAN du certificat. Les fichiers de verrouillage contiennent aussi des URL résolues ; elles doivent utiliser le même hôte.

    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.

    Faire pointer npm vers le nom du certificat

    Mettez à jour le paramètre de registre à chaque niveau de .npmrc (et régénérez les fichiers de verrouillage s’ils contiennent l’ancien hôte).

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

    Propriétaires de registres : couvrir chaque nom utilisé

    Réémettez le certificat du registre avec tous les noms d’hôte qu’utilisent les clients, y compris les alias conservés pour la compatibilité.

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

Erreurs associées

Parcourir toute la base de données des erreurs de signature