O comando para com um ca.crt em falta ou um index.txt em falta, embora a CA emita certificados há meses. Nada mudou na autoridade; o comando limitou-se a olhar para outro lado. O Easy-RSA 3 determina um diretório PKI a partir de uma opção, de uma variável de ambiente, de um ficheiro vars e de um valor predefinido incorporado, e qualquer um deles pode apontar para longe da autoridade da implementação. Verifique qual venceu antes de criar o que quer que seja.

O erro nomeia um ficheiro, não um diretório

O diretório de instalação e o diretório do emissor são dois locais diferentes. Encontrar easyrsa na máquina prova apenas que a ferramenta está instalada, não que encontrou a autoridade em que a sua VPN confia.

Por isso reinstalar o pacote ou voltar a executar o passo init parece produtivo e não muda nada.

Verifique o seletor antes de tudo o resto

No Easy-RSA 3 o seletor é EASYRSA_PKI ou a opção correspondente --pki-dir. Indique um caminho absoluto como --pki-dir=/srv/pki/office, e a resposta deixa de depender de onde estava. Esse único hábito elimina toda uma classe deste erro, sobretudo em scripts executados a partir do cron ou de um checkout de CI.

Confirme primeiro a geração, porque o hábito do Easy-RSA 2 com um ficheiro vars mais build-key é um modelo diferente do que o Easy-RSA 3 espera. easyrsa --version imprime a geração antes de fazer qualquer outra coisa, e ./easyrsa --help lista os subcomandos: um alvo build-key significa 2.x, enquanto build-client-full significa 3.x. Levar um caminho KEY_DIR antigo para uma invocação 3.x porque o nome do diretório parece familiar produz exatamente este erro.

Se a cadeia de versão e a sintaxe do comando não concordarem, pare e leia a documentação da versão instalada.

A precedência explica um ficheiro vars que perdeu

A precedência documentada é opção de linha de comandos, depois ambiente, depois ficheiro vars, depois valor predefinido incorporado. Por isso, um valor correto em vars perde para uma variável de ambiente herdada, e essa é a versão silenciosa desta falha. Inspecione as variáveis pretendidas e a seleção de ficheiros em vez de despejar todo o ambiente num ticket. A diferença entre os dois é normalmente um segredo.

Percorra a cadeia por ordem e anote que fonte forneceu o caminho usado pelo comando. Depois de saber isso, a correção é uma flag ou um export, não uma nova autoridade de certificação.

A referência de configuração do Easy-RSA define o seletor e a precedência, e é a citação a colocar no ticket.

Confirme o emissor com material público

Com o habitual emissor baseado em ficheiros, leia ca.crt e compare a sua impressão digital com o registo de emissor que aprovou. Um nome de sujeito coincidente não é prova de identidade, e um diretório chamado production também não. Só a impressão digital liga o ficheiro que encontrou à autoridade em que os seus pares foram instruídos a confiar.

Basta uma verificação só de leitura: openssl x509 -in /srv/pki/office/ca.crt -noout -subject -issuer -serial -fingerprint -sha256.

Depois estabeleça o papel do diretório. Um diretório de pedidos usado por um cliente não é uma base de dados de emissor, e uma chave de assinatura guardada offline não tem nada que fazer em cada anfitrião VPN. Um ca.key em falta é uma propriedade de projeto nessa disposição, não uma permissão para inventar uma autoridade substituta.

Se o estado realmente desapareceu

Por vezes o caminho está correto e o estado genuinamente não está lá. Um index.txt vazio e um contador de série reiniciado dão-lhe uma PKI que parece saudável e não pode provar nada sobre os certificados que nunca viu: as renovações não vão revogar os antigos, e os novos números vão colidir com o histórico. Restaure antes a partir da cópia de segurança aprovada da CA, porque inicializar uma PKI vazia noutro local apenas move o erro e deixa atrás uma segunda autoridade não relacionada.

Quando o caminho e o emissor concordarem, trate a falha seguinte pelo seu mérito. Permission denied, uma chave de assinatura que precisa da sua frase-passe e um registo de emissão em falta são três avarias diferentes, e só uma diz respeito ao diretório que acabou de corrigir.

Nunca remova a cifragem de chaves nem alargue as permissões de diretório para encobrir um erro de caminho. O erro é barato de corrigir; a reparação não.

Artigos relacionados