Mensagem de erro
error Error: self-signed certificate in certificate chain
Também aparece como
- error Error: self signed certificate in certificate chain
O Yarn 1.x imprime “error Error: …” seguido de um stack trace do Node.js (at TLSSocket.onConnectSecure …). O Node.js 16 e anteriores escrevem “self signed”. O Yarn 4 relata falhas de TLS no próprio formato, “➤ YN0001: RequestError: <reason>”.
Yarn Classic (1.x) — registry request over HTTPS
O que significa
O Yarn Classic não conseguiu verificar o certificado do registro porque a cadeia termina em uma raiz autoassinada em que o Node.js não confia. O Yarn imprime o erro do Node.js como está, com um stack trace logo abaixo. Em uma rede corporativa, esse é o sintoma clássico de um proxy com inspeção de TLS cuja raiz é confiável para o navegador, mas não para o Node.js.
Por que acontece
Um proxy com inspeção de TLS reassina o registry.yarnpkg.com
comumProxies corporativos apresentam certificados da própria raiz, na qual o sistema operacional confia, mas o Node.js não.
Um registro privado que envia a própria raiz
ocasionalRegistros internos com certificados da empresa; a raiz da cadeia ainda precisa ser confiável no cliente.
O Node.js ignora o trust store do sistema operacional
ocasionalO Yarn roda sobre o Node.js, que usa a própria lista de raízes embutida, a menos que seja configurado de outra forma.
Como corrigir
- 1.
Definir o cafile do Yarn 1
O comando yarn config set cafile faz o Yarn verificar o registro com base nesse arquivo PEM; assim como a configuração equivalente do npm, o cafile substitui as raízes padrão nas requisições ao registro.
bash # Yarn 1.x setting (stored in ~/.yarnrc) yarn config set cafile /etc/ssl/private-ca/corp-proxy-root.pem yarn config get cafile - 2.
Ou usar NODE_EXTRA_CA_CERTS
Adiciona a raiz à lista embutida do Node.js para o Yarn e para todas as outras ferramentas Node.js do ambiente.
bash export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-proxy-root.pem yarn install - 3.
Yarn 4: httpsCaFilePath
O Yarn moderno lê httpsCaFilePath do .yarnrc.yml; o Yarn 4 se recusa a iniciar quando encontra a chave legada caFilePath.
yaml # Yarn 4 (Berry): .yarnrc.yml — Yarn 4 rejects the old caFilePath key httpsCaFilePath: /etc/ssl/private-ca/corp-proxy-root.pem - 4.
Diagnóstico temporário: strict-ssl false
Confirma que a confiança é o único problema. Pacotes executam scripts de instalação, então deixar a verificação desligada abre caminho para pacotes substituídos; remova a configuração logo depois do teste.
bash # Temporary diagnostic only; revert immediately afterwards yarn config set strict-ssl false && yarn install; yarn config delete strict-ssl