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

Message d’erreur

npm error code CERT_HAS_EXPIRED

Également affiché sous la forme

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

npm 10 et les versions ultérieures affichent « npm error code CERT_HAS_EXPIRED » ; npm 9 et les versions antérieures, « npm ERR! code CERT_HAS_EXPIRED ». Les lignes suivantes donnent l’URL avec « reason: certificate has expired ».

npm (Node.js) — registry request over HTTPS

Ce que cela signifie

Un certificat de la chaîne que npm a reçue du registre (ou d’un proxy intermédiaire) a dépassé sa date d’expiration selon l’horloge de cette machine. Pour le registre public, cela ne signifie presque jamais que le certificat de npm lui-même a expiré : cela indique une ancienne AC épinglée dans votre configuration npm, une liste de racines Node.js obsolète, un certificat de proxy ou une horloge fausse. Pour les registres privés, il se peut que le certificat du serveur ait réellement expiré.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Déterminer quel registre et quel certificat sont en cause

    Relevez le registre configuré et la date de fin de validité du certificat qu’il sert. Un certificat expiré sur un registre privé doit être renouvelé sur le serveur.

    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.

    Supprimer les paramètres ca ou cafile obsolètes

    npm config list affiche les paramètres de chaque niveau de .npmrc ; supprimez les entrées ca ou cafile qui pointent vers d’anciens certificats (ou mettez à jour le fichier qu’elles référencent).

    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.

    Mettre à jour Node.js et npm

    Une version maintenue de Node.js apporte une liste de racines à jour ; mettez ensuite npm à jour.

    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

Erreurs associées

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