Erro 77 do curl: locais de verificação do certificado numa instalação de VPN
O erro 77 é uma falha de entrada de CA local, não um certificado de servidor defeituoso. Encontre o ficheiro de confiança que o curl lê, corrija-o e inspecione o script antes de o executar.
Cola o comando de instalação de uma linha de um tutorial, pressiona Enter e obtém curl: (77). A mensagem menciona locais de verificação do certificado, por isso o instinto é assumir que o certificado do fornecedor de VPN está avariado e procurar uma opção que ignore a verificação. Essa leitura está errada, e agir com base nela transforma um problema de ficheiro local numa decisão de segurança. Recuemos até ao início.
Passo 1: leia o que significa o número
O erro 77 diz respeito à entrada de CA local: o curl não conseguiu ler ou carregar o material do certificado em que lhe foi dito para confiar. O erro 60 é o da outra parte, quando a cadeia do servidor não valida. Aparecem lado a lado nos tutoriais e significam coisas opostas.
Se a sua saída diz 77, o servidor nunca foi o problema. O cliente não conseguiu abrir o ficheiro que queria usar para a verificação, e isso é um problema de caminho, permissões ou empacotamento na sua máquina.
Passo 2: leia o comando que copiou
Os comandos copiados escondem caracteres. O -l minúsculo é --list-only, que se aplica a listar protocolos. O -L maiúsculo é --location, que segue um redirecionamento HTTP. Não são grafias alternativas, e um tutorial que escreve uma ao descrever a outra manda as pessoas por um caminho de redirecionamento que nunca foi pretendido.
Seguir um redirecionamento não repara o caminho de um armazém de confiança nem prova que o anfitrião final é o editor que pretendia. Se o comando veio de uma publicação de fórum, volte a escrevê-lo a partir das instruções do próprio projeto em vez de confiar na colagem.
Passo 3: descubra que entrada de CA essa compilação usa
Comece por identificar o binário, porque a resposta depende de como foi compilado:
curl --versionAnote a versão e o backend TLS. Uma compilação com armazém de confiança nativo lê o armazém do sistema através da biblioteca TLS, enquanto uma compilação apontada a um pacote lê um ficheiro. Um --cacert explícito, uma definição CURL_CA_BUNDLE ou um invólucro de shell podem substituir qualquer um dos dois, por isso uma instalação por pacote pode não tocar no ficheiro que falha de facto.
Para um armazém baseado em ficheiro, verifique três coisas por ordem: se o caminho existe, se a conta que invoca o comando o consegue ler e se contém o material de CA que espera. Um pacote com permissões erradas falha exatamente como um em falta, e ambos falham antes de qualquer conversa de rede sobre o servidor.
Passo 4: repare a entrada, não a verificação
Restaure a configuração de confiança suportada através de quem a detém: o pacote da distribuição, a sua gestão de configuração ou a variável de ambiente documentada. O objetivo é uma entrada de CA legível e correta para esse binário.
Não mude o URL para HTTP, não acrescente --insecure e não confie num certificado copiado de um download sem explicação. Cada uma dessas alterações muda o que está disposto a aceitar em vez de reparar o que o curl não conseguia ler, e a alteração costuma sobreviver ao incidente.
A referência para os números é o catálogo de erros do curl, e é suficientemente curto para ser lido uma vez com atenção.
Passo 5: descarregue, veja e só depois execute
Descarregue o instalador para um ficheiro em vez de o encaminhar para um shell no mesmo comando. Essa única alteração separa uma transferência que pode inspecionar do código que corre com os seus privilégios.
curl -fL -o vpn-installer.sh https://example.invalid/install.sh
file vpn-installer.sh
head -n 40 vpn-installer.shVerifique que a resposta é o script que esperava e não uma página de erro HTML, um aviso de redirecionamento ou um ficheiro vazio. Se o editor fornecer uma soma de verificação ou uma assinatura, verifique-a através do processo de lançamento documentado e não de um valor citado no mesmo tópico do fórum.
Lembre-se do que o HTTPS fez e do que não fez. Autenticou o transporte até ao anfitrião que contactou; não reviu o conteúdo do script e não lhe diz se o editor é de confiança.
Passo 6: mantenha os passos de instalação separados
Descarregar o ficheiro, instalar o cliente, configurar o túnel e validar as rotas são quatro operações com quatro modos de falha diferentes. Fazê-las uma de cada vez significa que um erro mais adiante na sequência tem uma causa óbvia em vez de quatro candidatas.
Se a instalação correr bem e o túnel subir, verifique as rotas e um destino real antes de fechar o ticket. O erro do curl fica corrigido quando um curl -I https://example.invalid simples volta a funcionar, não quando o instalador deixa de se queixar.