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

Message d’erreur

npm error code DEPTH_ZERO_SELF_SIGNED_CERT

Également affiché sous la forme

  • npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT

npm 10 et les versions ultérieures affichent « npm error code DEPTH_ZERO_SELF_SIGNED_CERT », npm 9 et les versions antérieures « npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT ». La ligne de raison indique « self-signed certificate », avec la suggestion --use-system-ca sur les versions récentes de Node.js.

npm (Node.js) — registry request over HTTPS

Ce que cela signifie

Le registre auquel npm s’est connecté a présenté un unique certificat auto-signé auquel Node.js ne fait pas confiance. Il n’y a aucune chaîne d’AC : les seules solutions sont donc de faire délibérément confiance à ce certificat précis ou de doter le registre d’un certificat émis par une AC. C’est typique des registres locaux ou auto-hébergés démarrés avec un certificat généré.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Faire confiance exactement à ce certificat

    Récupérez le certificat, comparez son empreinte SHA-256 avec celle affichée sur l’hôte du registre, puis ajoutez-le avec NODE_EXTRA_CA_CERTS (ou le paramètre cafile de npm).

    bash
    # Save the registry's certificate, check its fingerprint, and trust exactly this file
    openssl s_client -connect registry.example.com:443 -servername registry.example.com </dev/null 2>/dev/null \
      | openssl x509 -out registry.pem
    openssl x509 -in registry.pem -noout -fingerprint -sha256
    NODE_EXTRA_CA_CERTS=$PWD/registry.pem npm install
  2. 2.

    Limiter le registre privé à votre scope

    N’acheminer que le scope de votre organisation vers le registre privé laisse tous les paquets publics sur registry.npmjs.org : un problème de certificat sur l’hôte privé ne peut donc pas les affecter.

    ini
    ; .npmrc — only @acme packages come from the private registry; the rest from npmjs
    @acme:registry=https://registry.example.com/
  3. 3.

    Doter le registre d’un certificat émis par une AC

    Un certificat émis par une AC publique (ACME) ou par l’AC d’entreprise que vos machines approuvent déjà rend inutiles les exceptions certificat par certificat.

    bash
    # Give the registry a certificate from a CA your machines trust (public ACME or company CA)
    sudo certbot certonly --standalone -d registry.example.com

Erreurs associées

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