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

Message d’erreur

npm error code SELF_SIGNED_CERT_IN_CHAIN

Également affiché sous la forme

  • 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 et les versions ultérieures affichent « npm error code SELF_SIGNED_CERT_IN_CHAIN », npm 9 et les versions antérieures « npm ERR! code SELF_SIGNED_CERT_IN_CHAIN ». Les lignes suivantes répètent le code comme errno et indiquent l’URL avec « reason: self-signed certificate in certificate chain ».

npm (Node.js) — registry request over HTTPS

Ce que cela signifie

La connexion au registre a présenté une chaîne de certificats qui se termine par une racine auto-signée inconnue de Node.js. Pour registry.npmjs.org, cela signifie que le trafic est intercepté et re-signé, presque toujours par un proxy d’entreprise ou un antivirus avec analyse HTTPS, dont le navigateur approuve la racine, mais pas npm.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Fournir à npm la racine du proxy avec cafile

    Exportez le certificat racine (fourni par votre équipe informatique ou tiré du magasin de confiance du système d’exploitation) au format PEM et définissez-le comme cafile de npm. npm ne fait alors confiance qu’aux AC de ce fichier : sur les ordinateurs portables qui fonctionnent aussi hors du réseau de l’entreprise, ajoutez donc les racines publiques au même fichier ou préférez NODE_EXTRA_CA_CERTS.

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

    Ou définir NODE_EXTRA_CA_CERTS

    Ajoute la racine pour npm et tous les autres outils Node.js sans remplacer les racines publiques de Node.js. Sous Windows, définissez NODE_EXTRA_CA_CERTS comme variable d’environnement utilisateur, puis ouvrez un nouveau 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.

    Ou laisser Node.js utiliser le magasin du système d’exploitation

    NODE_USE_SYSTEM_CA=1 amène Node.js (et npm) à faire confiance à ce que le système d’exploitation approuve, ce qui, sur les machines gérées, inclut la racine du proxy.

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

    Diagnostic temporaire : --strict-ssl=false

    Uniquement pour confirmer que le problème vient de la confiance. Les paquets exécutent des scripts d’installation : accepter des téléchargements non vérifiés, c’est précisément ainsi que les attaques de la chaîne d’approvisionnement atteignent les machines des développeurs. Ne mettez jamais strict-ssl=false dans .npmrc.

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

Erreurs associées

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