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

Mensagem de erro

npm error code ERR_TLS_CERT_ALTNAME_INVALID

Também aparece como

  • 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

O npm 10 e posteriores imprimem “npm error code ERR_TLS_CERT_ALTNAME_INVALID”; o npm 9 e anteriores, “npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID”. O host e os altnames na linha do motivo vêm da sua configuração e do certificado do servidor.

npm (Node.js) — registry request over HTTPS

O que significa

O certificado do registro é confiável, mas não foi emitido para o nome de host da URL de registro que o npm usou. A linha do motivo mostra os dois lados: o host que o npm pediu e os nomes que o certificado contém. É típico depois que um registro muda de nome, ou quando a URL do registro usa um alias, um endereço IP ou o ambiente errado.

Por que acontece

Como corrigir

  1. 1.

    Comparar a configuração de registro do npm com o certificado

    Imprima o registro configurado (e as configurações de proxy) e a lista de SANs do certificado. Os lockfiles também contêm URLs resolvidas, que precisam usar o mesmo host.

    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.

    Apontar o npm para o nome do certificado

    Atualize a configuração registry em todos os níveis de .npmrc (e gere os lockfiles de novo se eles contiverem o host antigo).

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

    Donos do registro: cobrir todos os nomes em uso

    Reemita o certificado do registro com todos os nomes de host que os clientes usam, inclusive os aliases mantidos por compatibilidade.

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

Erros relacionados

Ver toda a base de erros de assinatura