와이어샤크 인증서 추출
이번 글에서는 캡쳐된 SSL/TLS 패킷에서 와이어샤크(Wireshark)를 이용하여 서버의 인증서를 추출해 보도록 하겠습니다.
예제에 사용된 파일은 아래의 파일에서 다운 받으실 수 있습니다. 캡처된 패킷의 프로토콜은 TLSv1.2 입니다.
비밀키를 갖고 계실 경우 암호화된 SSL/TLS 패킷을 복호화 할 수 도 있는데 이와 관련 내용은 아래의 글을 참고해 주시기 바랍니다.
와이어샤크(Wireshark)를 이용하여 SSL 트래픽 복호화

인증서 포함된 패킷 검색
인증서가 포함된 패킷을 검색합니다. 서버의 인증서를 보내는 것이기 때문에 서버에서 클라이언트로 전송된 패킷 중에서 검색하시면 됩니다.

Info의 내용중에서 Server Hello, Certificate, Server Hello Done에 인증서가 포함될 수 있습니다. 그리고 예제의 패킷처럼 Certificate 라는 패킷안에 인증서가 포함될 수도 있습니다. 예제 파일에는 8번째에 패킷에 인증서가 포함된 것을 알 수 있습니다.
인증서 확인
인증서가 포함된 패킷을 선택하면 상세창에서 보다 자세한 정보를 확인 할 수 있습니다.
Secure Socket Layer에서 TLSv1.2 Record Layer: Handshake Protocol: Certificate 라고 내용을 펼칩니다. 그 다음 Handshake Protocol: Certificate 부분을 펼쳐 보시면 인증서 정보가 나타납니다. 샘플 예제에서는 3개의 인증서가 포함 된 것을 알 수 있습니다.

인증서 체인에 따라서 인증서가 하나 또는 그 이상이 될 수 있습니다. 예제 패킷에서는 첫 번째 인증서가 서버의 인증서고, 두번째와 세번째가 CA 체인 인증서입니다.
인증서 저장
저장하고자 하는 인증서를 선택합니다. 그리고 아래의 이미지 처럼 마우스 오른쪽 버튼을 클릭하신 다음 Export Packet Bytes 메뉴를 선택하시면 인증서를 저장할 수 있습니다.

인증서 확인
인증서의 경우 DER 포맷으로 인증서의 내용을 확인 하기 위해서는 아래의 명령어로 확인 할 수 있습니다.
$ openssl x509 -inform der -in cert.der -text
그리고 인증서를 PEM 포맷으로 변환하기 위해서는 아래의 명령어를 사용하여 저장 할 수 있습니다.
$ openssl x509 -inform der -in cert.der -outform pem -out cert.crt
( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)