Como extrair o certificado X.509 do tráfego de rede ativo automaticamente no sistema operacional Linux

Como extrair o certificado X.509 do tráfego de rede ativo automaticamente no sistema operacional Linux

Agradecerei se alguém puder me indicar como extrair um certificado X.509 do tráfego de rede ativo automaticamente durante a fase de handshake entre cliente e servidor no sistema operacional Linux.

Uma pergunta semelhante foi feita há algum tempoExtraindo certificados SSL da rede ou arquivos pcapmas a resposta estava incompleta.

A resposta diz para usar o seguinte comando

ssldump -Nr file.pcap | awk 'BEGIN {c=0;} { if ($0 ~ /^[ ]+Certificate$/) {c=1; print "========================================";} if ($0 !~ /^ +/ ) {c=0;} if (c==1) print $0; }'

Mas é fornecido para extração manual do certificado devido ao envolvimento do arquivo pcap.

Alguém pode ajudar a modificar o comando acima para atender às minhas necessidades ou sugerir qualquer outro método alternativo para fazer o mesmo.

Responder1

Você está tentando extraí-lo especificamente de uma captura de pacote ou deseja apenas obter o certificado da linha de comando durante o handshake?

Se você precisar apenas obter o certificado, poderá fazer o seguinte:

echo | openssl s_client -connect sub.domain.tld:443 | openssl x509 -noout -text

Se você executar o comando sem retornar para openssl, poderá ver muito mais detalhes sobre o certificado, mas o segundo opensslcomando extrai o próprio certificado.

O echopipe é necessário para que o shell OpenSSL saia corretamente e retorne ao prompt do Bash.

Obviamente, isso escreverá tudo em STDOUT. Se quiser salvar o certificado, você precisará redirecionar para um arquivo finalizando o comando com > filename.crt. Se houver algum erro na cadeia de certificados, ele não terminará no arquivo, mas será gravado em STDERR.

informação relacionada