Analyze a TLS Handshake with Wireshark
Wireshark can show where a TLS connection is failing: before a ClientHello, during negotiation, or after an alert or TCP reset. This guide captures one HTTPS request and uses display filters to inspect the handshake. It complements the site’s DNS and TCP triage guide by focusing on TLS messages.
Prepare One Reproducible HTTPS Request
Capture SetupUse a test host or service you administer and record its hostname and the time of the test. In Wireshark, open the Capture Options dialog, select the interface that carries the traffic, and start a short capture. Avoid capturing on a shared production link unless approved.
Test request: HTTPS to a controlled hostCapture interface: active client interfaceStart capture, then generate the request in a separate terminal:curl -I https://example.com/❯ Illustrative Output (Results Vary)
Example request result:HTTP/2 200The actual status and negotiated protocol depend on the server and client.Use Display Filters on the Completed Capture
FilterStop the capture after the test request finishes. Display filters do not remove packets from the saved capture; they only change what is shown. Start with TLS handshake messages, then narrow to the test host or port if the capture contains unrelated traffic.
tls.handshaketcp.port == 443 && tls.handshake❯ Illustrative Output (Results Vary)
Visible packets should include the client and server handshake messagesfor the controlled connection, when captured at a suitable point.Check SNI, ALPN, and Supported Versions
ClientHelloSelect a ClientHello packet and expand the Transport Layer Security details pane. The fields below help confirm which hostname and application protocols the client offered. The Server Name Indication field may be absent or concealed when ECH is in use.
tls.handshake.type == 1tls.handshake.extensions_server_nametls.handshake.extensions_alpn_strtls.handshake.extensions.supported_version❯ Illustrative Output (Results Vary)
ClientHello Server Name: example.com (if visible) ALPN: h2, http/1.1 (example values) Supported Versions: inspect the offered listTrace the Handshake in Packet Order
TroubleshootUse the packet list and sequence numbers to see whether the server responded, which TLS version was selected, and whether the connection ended with an alert or TCP reset. The exact messages vary by TLS version, resumption, and capture location. Do not interpret missing encrypted handshake details as proof that the server sent no certificate.
tls.handshake.type == 2tls.alert_messagetcp.flags.reset == 1tcp.analysis.retransmission❯ Illustrative Output (Results Vary)
ClientHello -> ServerHello -> remaining handshake data or alertIf no server response appears, also check the TCP path and capture point.Record the Result and Protect the Capture
CloseoutRecord the Wireshark version, interface, test time, display filter, and relevant packet numbers. Save the capture only when needed for the investigation, restrict access, and follow the organization’s retention and deletion rules. If TLS decryption is required in an authorized lab, use a dedicated test client key log and protect it like a credential.
Capture file: tls-test.pcapngRelated filter: tls.handshakeSensitive data review: complete before sharing❯ Illustrative Output (Results Vary)
Finding: summarize the last successful handshake message and observed errorNext action: validate the relevant client, server, or network configuration