VPN, proxy e filtros

Certificados de proxy empresarial interferem em ferramentas do Terminal no Mac

Algumas redes empresariais inspecionam o tráfego HTTPS. O proxy assina o tráfego com um certificado raiz da empresa e ferramentas que não confiam nele param.

Aplica-se a: todas as versões atuais do macOS. O NODE_USE_SYSTEM_CA do Node.js requer Node.js 22.19, 24.6 ou posterior.Verificado: 29 de outubro de 2026

Sintomas

  • npm ou Node mostra “self-signed certificate in certificate chain” ou “unable to get local issuer certificate”.
  • Git mostra “SSL certificate problem” para repositórios remotos HTTPS.
  • O Safari abre o site, mas curl ou Python não.
  • Os erros ocorrem apenas na rede ou VPN da empresa.

Possíveis causas

  • Inspeção TLS. O proxy substitui o certificado do site por outro assinado por um certificado raiz da empresa.
  • Armazenamentos de confiança separados. O Safari usa as chaves do macOS. Muitas ferramentas de linha de comando usam suas próprias listas de certificados confiáveis.
  • Ajuste de proxy ausente. Ferramentas no Terminal nem sempre usam o proxy do sistema. Elas precisam de variáveis de proxy ou ajustes próprios.

Como verificar

  1. Mostre a cadeia de certificados enviada pelo servidor. Veja o emissor do certificado no topo.

    openssl s_client -connect registry.npmjs.org:443 -servername registry.npmjs.org -showcerts </dev/null
  2. Mostre o handshake TLS com curl.

    curl -v https://registry.npmjs.org/ -o /dev/null
  3. Encontre o certificado raiz da empresa no Acesso às Chaves. Procure o nome da empresa nas chaves do Sistema.

  4. Mostre as variáveis de proxy no shell.

    env | grep -i proxy

Como corrigir

  1. Obtenha o certificado raiz da empresa com a equipe de TI como arquivo PEM. Não confie em certificados de fontes desconhecidas.

  2. Para ferramentas Node.js, informe o arquivo em NODE_EXTRA_CA_CERTS. Reinicie a ferramenta após configurá-lo.

    export NODE_EXTRA_CA_CERTS=~/certs/company-root.pem
  3. Com Node.js 22.19, 24.6 ou posterior, você pode usar os certificados em que as chaves confiam.

    export NODE_USE_SYSTEM_CA=1
  4. Para npm, defina o arquivo de certificado.

    npm config set cafile ~/certs/company-root.pem
  5. Para Git, defina o arquivo de certificado.

    git config --global http.sslCAInfo ~/certs/company-root.pem
  6. Para curl, informe o arquivo com --cacert.

    curl --cacert ~/certs/company-root.pem https://example.com
  7. Configure o proxy empresarial para ferramentas do Terminal se sua equipe de TI usar um.

    export https_proxy=http://proxy.example.com:8080
  8. Não desative a verificação de certificados, por exemplo com strict-ssl ou http.sslVerify. Isso torna a conexão insegura.

Com o Kilobat

  1. A verificação de conexão do Kilobat informa uma falha TLS como uma camada própria. Ela também informa se o proxy do sistema funciona quando o caminho direto não funciona.

    kilobat why https://registry.npmjs.org/
  2. Adicione --app para usar as variáveis de proxy do ambiente desse app.

    kilobat why https://registry.npmjs.org/ --app process:node

Perguntas

Por que o Safari funciona quando o npm falha?

O Safari confia nos certificados das chaves do macOS. O npm usa os certificados incluídos no Node.js, a menos que você adicione o certificado da empresa.

É seguro definir strict-ssl como false?

Não. Isso interrompe todas as verificações de certificado do registro. Adicione o certificado raiz da empresa.

Fontes

Verificado em 29 de outubro de 2026.