Как автоматически извлечь сертификат X.509 из сетевого трафика в ОС Linux

Как автоматически извлечь сертификат X.509 из сетевого трафика в ОС Linux

Буду признателен, если кто-нибудь сможет подсказать мне, как автоматически извлечь сертификат X.509 из сетевого трафика во время фазы установления связи между клиентом и сервером в ОС Linux.

Похожий вопрос был задан некоторое время назад.Извлечение SSL-сертификатов из сетевых или pcap-файловно ответ был неполным.

В ответе говорится, что нужно использовать следующую команду:

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

Но он предназначен для ручного извлечения сертификата из-за задействования файла pcap.

Может ли кто-нибудь помочь изменить приведенную выше команду в соответствии с моими требованиями или предложить какой-либо другой альтернативный метод сделать то же самое.

решение1

Вы пытаетесь извлечь его из перехваченного пакета или просто хотите извлечь сертификат из командной строки во время рукопожатия?

Если вам нужен только сам сертификат, вы можете сделать следующее:

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

Если вы запустите команду без обратного перехода к openssl, то вы сможете увидеть гораздо больше подробностей о сертификате, но вторая opensslкоманда извлекает сам сертификат.

Канал echoнеобходим для корректного завершения работы оболочки OpenSSL и возврата к командной строке Bash.

Это, очевидно, запишет все в STDOUT. Если вы хотите сохранить сертификат, вам нужно будет перенаправить в файл, завершив команду на > filename.crt. Если в цепочке сертификатов есть какие-либо ошибки, они не попадут в файл, а вместо этого будут записаны в STDERR.

Связанный контент