Linux OS에서 라이브 네트워크 트래픽에서 X.509 인증서를 자동으로 추출하는 방법

Linux OS에서 라이브 네트워크 트래픽에서 X.509 인증서를 자동으로 추출하는 방법

Linux OS에서 클라이언트와 서버 간의 핸드셰이크 단계 동안 라이브 네트워크 트래픽에서 X.509 인증서를 자동으로 추출하는 방법을 알려주시면 감사하겠습니다.

비슷한 질문이 얼마 전에 조용히 요청되었습니다.네트워크 또는 pcap 파일에서 SSL 인증서 추출그러나 대답은 불완전했습니다.

대답은 다음 명령을 사용하라고 말합니다

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명령은 인증서 자체를 추출합니다.

echoBash 프롬프트로 돌아가기 위해 OpenSSL 셸을 완전히 종료하려면 파이프가 필요합니다 .

이것은 분명히 모든 것을 STDOUT에 기록합니다. 인증서를 저장하려면 명령을 > filename.crt. 인증서 체인에 오류가 있으면 파일에 포함되지 않고 대신 STDERR에 기록됩니다.

관련 정보