Ler os campos públicos de um certificado nunca exige exibir a chave privada correspondente, e as ferramentas para isso acompanham todo sistema que encerra uma VPN. O risco está um passo antes: o arquivo que você recebeu pode não ser um certificado. Um certificado PEM, um blob DER, um pacote PKCS#12 e um perfil OpenVPN podem chegar com o mesmo nome e conter material muito diferente, então identifique o contêiner antes de escolher um comando.

Três fatos decidem qual comando é seguro: o que o arquivo contém, o que você precisa ler dele e quem verá a saída. Erre em qualquer um deles e a própria inspeção se torna o incidente.

Qual dos três arquivos você recebeu

Um certificado PEM é texto com marcadores BEGIN e END visíveis, um arquivo DER é binário e precisa de um sinalizador de formato de entrada, e um pacote é um contêiner que pode conter uma chave ao lado do certificado. file server.crt separa texto de binário em um segundo, e uma olhada na primeira linha separa um certificado puro de um perfil que embute um. Adivinhar aqui é o que transforma uma inspeção em incidente.

Se o arquivo for um perfil e não um certificado, trate-o como credencial até que se prove o contrário. Essa suposição não custa nada e evita o erro mais comum em toda esta tarefa.

Ler os campos públicos de um certificado PEM

Para um certificado que você tem autorização para inspecionar, o subcomando x509 com -noout imprime os campos selecionados e nada mais. Suprimir o corpo é o que mantém a saída em metadados, e é também o que torna seguro colá-la em um chamado. Os seletores abaixo são os públicos, e a documentação do openssl x509 lista os demais.

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

Em um certificado de teste gerado localmente, esse comando imprime uma linha de subject e issuer, o par notBefore e notAfter e uma impressão digital SHA-256. Esses campos identificam o objeto; não estabelecem um caminho de confiança válido, que é uma tarefa de verificação separada, com comando e resposta próprios. Um arquivo de cadeia também pode imprimir apenas o primeiro certificado, a menos que você mesmo percorra o arquivo. Comparar dois arquivos assim custa um comando e decide qual deles o par realmente apresenta.

Pacotes que contêm uma chave ao lado do certificado

Um arquivo .p12 ou .pfx pode carregar uma chave privada, e o comando de análise a imprime a menos que você suprima essa parte da saída. Com -nokeys o mesmo comando ainda relata a estrutura do contêiner, incluindo um saco de chave oculto, sem emitir nenhum material de chave; retire esse sinalizador e um bloco de chave aparece no terminal e no histórico do shell.

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

Um perfil OpenVPN embute o mesmo material como texto, então a fronteira fica visível se você souber onde olhar. O material público fica entre BEGIN CERTIFICATE e END CERTIFICATE, enquanto qualquer coisa entre BEGIN PRIVATE KEY e sua linha END correspondente é a chave e não deve sair do host. Copiar o perfil inteiro publica os dois.

Obter o valor de referência em outro lugar

Uma impressão digital lida a partir da conexão que você está tentando verificar não prova nada, porque a parte em que você desconfia foi quem a forneceu. Isso não é um argumento contra impressões digitais; é um argumento sobre procedência. Compare o valor com um obtido por um canal no qual o par não pode escrever, como o certificado publicado em um repositório interno ou o hash impresso em um registro de mudança assinado.

Onde um repositório de confiança realiza a validação, deixe que ele a faça e leia o erro produzido em vez de substituí-lo por sua própria comparação. A distinção que importa é quem forneceu a referência, não qual função de hash foi usada.

Compartilhar o resultado e o que fazer após um deslize

Envie o erro de validação exato, as datas relevantes e apenas os detalhes de identidade que o destinatário precisa. Nomes de host internos e identificadores de conta continuam sensíveis mesmo quando nenhuma chave está presente, e um serviço público de colagem é o destino errado para qualquer um deles. Cole no chamado, não em um buffer temporário compartilhado por outra pessoa.

Se material de chave apareceu na tela ou em um arquivo, trate-o como comprometido e troque-o em vez de esperar que ninguém tenha olhado. Depois anote o arquivo inspecionado, o comando usado e para onde foi a saída, porque esse registro é o que transforma um susto em procedimento. A troca é barata perto do custo de supor que ninguém guardou uma captura de tela, e o mesmo registro diz ao próximo engenheiro quais arquivos foram tocados. Faça as duas coisas antes de o chamado ser encerrado.

Artigos relacionados