PCAP의 TLS 핸드셰이크 실패: ClientHello, ServerHello, 인증서, 경고 및 증거 재설정
ClientHello, ServerHello, 인증서, 경고 및 TCP 재설정 증거를 읽어 패킷 캡처에서 TLS 핸드셰이크 실패를 진단하는 방법입니다.
TLS 핸드셰이크 실패는 종종 "SSL 오류", "인증서 문제", "핸드셰이크 실패" 또는 "연결 재설정"으로 보고됩니다. 이러한 메시지는 유용하지만 PCAP는 핸드셰이크가 중지된 위치를 표시할 수 있습니다. 그 위치가 중요해요.
'ServerHello' 이전의 TLS 실패는 인증서 유효성 검사 경고와 다릅니다. 'ClientHello' 이후의 TCP 재설정은 인증서 교환 이후의 치명적인 TLS 경고와 다릅니다. 패킷 캡처 타임라인을 통해 경계를 식별할 수 있습니다.
TCP 연결로 시작
TLS를 디버깅하기 전에 TCP를 확인하세요.
- SYN
- SYN/ACK
- ACK
- 클라이언트의 데이터
TCP가 설정되지 않으면 이는 TLS 핸드셰이크 실패가 아닙니다. 라우팅, 방화벽, 포트, 서버 연결성 또는 TCP 정책입니다.
TCP가 설정되고 클라이언트가 ClientHello를 보내면 TLS가 시작됩니다.
ClientHello는 클라이언트가 제공한 내용을 보여줍니다.
ClientHello는 다음을 밝힐 수 있습니다:
- 지원되는 TLS 버전
- 암호 제품군 제공
- SNI 호스트 이름
- ALPN 프로토콜
- 지원되는 그룹
- 서명 알고리즘
SNI가 누락된 경우 서버는 기본 인증서를 반환하거나 핸드셰이크를 거부할 수 있습니다. 클라이언트가 이전 프로토콜이나 암호만 제공하는 경우 서버는 핸드셰이크 실패 또는 재설정으로 응답할 수 있습니다.
이것이 캡처가 기존 내장 클라이언트, 프록시 및 사용자 정의 통합에 유용한 이유입니다.
ServerHello 또는 ServerHello 없음
클라이언트가 ClientHello를 보내고 ServerHello가 도착하지 않으면 다음을 검사하세요.
- 방화벽 또는 미들박스 드롭
- 서버 정책 자동 종료
- 대규모 핸드셰이크 메시지 관련 MTU/경로 문제
- 서버에서 TCP 재설정
- 로드 밸런서 동작
ServerHello가 도착하면 선택한 버전과 암호를 검사합니다. 서버의 선택은 나중에 실패를 설명할 수 있습니다.
경고는 소음이 아니라 증거입니다
TLS 경고는 매우 유익할 수 있습니다.
- 알 수 없는 CA
- 잘못된 인증서
- 악수 실패
- 프로토콜 버전
- 잘못된 매개변수
- 닫기 알림
인증서 전달 후 클라이언트에서 보내는 치명적인 경고는 신뢰 체인, 호스트 이름 불일치, 만료된 인증서 또는 지원되지 않는 인증서 속성을 가리키는 경우가 많습니다. 'ClientHello' 이후 서버에서 발생하는 치명적인 경고는 암호, 프로토콜, SNI, 클라이언트 인증서 또는 정책을 가리킬 수 있습니다.
캡처를 다듬을 때 경고를 삭제하지 마십시오.
PCAP 수술이 적합한 곳
PCAP 수술은 엔지니어가 TLS 대화를 분리하고 악수 증거를 보존하는 데 도움이 되어야 합니다. TLS 지원을 위한 유용한 파생 캡처에는 다음이 포함됩니다.
- TCP 핸드셰이크
- ClientHello
- ServerHello(있는 경우)
- 인증서 메시지가 있는 경우
- TLS 경고
- TCP 재설정
- 메시지 사이의 타이밍
캡처를 삭제해야 하는 경우 주의하세요. 인증서 세부정보, SNI 또는 페이로드 길이를 제거하면 실패 이유도 제거될 수 있습니다. 정리 결정은 문제 해결 목표와 일치해야 합니다.
"TLS 핸드셰이크 실패 pcap", "ClientHello no ServerHello" 또는 "SSL 경고 알 수 없는 CA Wireshark"와 같은 검색 쿼리의 경우 대답은 핸드셰이크 경계에 있습니다. 좋은 패킷 수술 워크플로우는 경계를 숨기는 대신 보존합니다.