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.
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
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/nullMostre o handshake TLS com curl.
curl -v https://registry.npmjs.org/ -o /dev/nullEncontre o certificado raiz da empresa no Acesso às Chaves. Procure o nome da empresa nas chaves do Sistema.
Mostre as variáveis de proxy no shell.
env | grep -i proxy
Como corrigir
Obtenha o certificado raiz da empresa com a equipe de TI como arquivo PEM. Não confie em certificados de fontes desconhecidas.
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.pemCom Node.js 22.19, 24.6 ou posterior, você pode usar os certificados em que as chaves confiam.
export NODE_USE_SYSTEM_CA=1Para npm, defina o arquivo de certificado.
npm config set cafile ~/certs/company-root.pemPara Git, defina o arquivo de certificado.
git config --global http.sslCAInfo ~/certs/company-root.pemPara curl, informe o arquivo com
--cacert.curl --cacert ~/certs/company-root.pem https://example.comConfigure o proxy empresarial para ferramentas do Terminal se sua equipe de TI usar um.
export https_proxy=http://proxy.example.com:8080Não desative a verificação de certificados, por exemplo com
strict-sslouhttp.sslVerify. Isso torna a conexão insegura.
Com o Kilobat
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/Adicione
--apppara 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
- Node.js: API de linha de comando, NODE_EXTRA_CA_CERTS e --use-system-ca
- Documentação do npm: config (cafile, proxy, https-proxy, strict-ssl)
- git-config(1), http.sslCAInfo e http.proxy, página de manual instalada com o macOS 27.2 (Git 2.56)
- Suporte da Apple: Altere os ajustes de confiança de um certificado no Acesso às Chaves
- curl(1), página de manual instalada com o macOS 27.2
Verificado em 29 de outubro de 2026.