Pular para o conteúdo
ecdsa.com
npm (Node.js)Gerenciadores de pacotes

Mensagem de erro

npm error code DEPTH_ZERO_SELF_SIGNED_CERT

Também aparece como

  • npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT

O npm 10 e posteriores imprimem “npm error code DEPTH_ZERO_SELF_SIGNED_CERT”; o npm 9 e anteriores, “npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT”. A linha do motivo diz “self-signed certificate”, com a dica sobre --use-system-ca nas versões recentes do Node.js.

npm (Node.js) — registry request over HTTPS

O que significa

O registro ao qual o npm se conectou apresentou um único certificado autoassinado em que o Node.js não confia. Não há cadeia de CA nenhuma, então os únicos caminhos são confiar deliberadamente nesse certificado exato ou dar ao registro um certificado emitido por uma CA. É típico de registros locais ou auto-hospedados iniciados com um certificado gerado.

Por que acontece

Como corrigir

  1. 1.

    Confiar exatamente neste certificado

    Obtenha o certificado, compare a impressão digital SHA-256 dele com a que aparece no host do registro e depois adicione-o com NODE_EXTRA_CA_CERTS (ou com o cafile do 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.

    Restringir o registro privado ao seu escopo

    Direcionar só o escopo da sua organização para o registro privado mantém todos os pacotes públicos no registry.npmjs.org, então um problema de certificado no host privado não pode afetá-los.

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

    Dar ao registro um certificado emitido por uma CA

    Um certificado de uma CA pública (ACME) ou da CA da empresa em que suas máquinas já confiam elimina a necessidade de exceções por certificado.

    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

Erros relacionados

Ver toda a base de erros de assinatura