Cómo extraer el certificado X.509 del tráfico de red en vivo automáticamente en el sistema operativo Linux

Cómo extraer el certificado X.509 del tráfico de red en vivo automáticamente en el sistema operativo Linux

Apreciaría si alguien pudiera indicarme cómo extraer un certificado X.509 del tráfico de red en vivo automáticamente durante la fase de protocolo de enlace entre el cliente y el servidor en el sistema operativo Linux.

Hace algún tiempo se hizo una pregunta similar en voz baja.Extracción de certificados SSL de la red o archivos pcappero la respuesta fue incompleta.

La respuesta dice usar el siguiente comando.

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

Pero se proporciona para la extracción manual del certificado debido a la participación del archivo pcap.

¿Alguien puede ayudarme a modificar el comando anterior para adaptarlo a mis necesidades o sugerir algún otro método alternativo para hacer lo mismo?

Respuesta1

¿Está intentando extraerlo específicamente de una captura de paquete o simplemente desea obtener el certificado de la línea de comando durante el protocolo de enlace?

Si solo necesita obtener el certificado, puede hacer lo siguiente:

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

Si ejecuta el comando sin volver a openssl, podrá ver muchos más detalles sobre el certificado, pero el segundo opensslcomando extrae el certificado en sí.

La echotubería es necesaria para que el shell OpenSSL salga limpiamente y pueda regresar al indicador de Bash.

Obviamente, esto escribirá todo en STDOUT. Si desea guardar el certificado, deberá redirigirlo a un archivo finalizando el comando con > filename.crt. Si hay algún error en la cadena de certificados, no terminará en el archivo, sino que se escribirá en STDERR.

información relacionada