How to inspect TLS SNI and certificates in a PCAP

Encrypted application data does not make every handshake field invisible. Depending on the TLS version, capture position and use of ECH, a passive capture may still reveal server names, negotiated versions, cipher suites and certificate details.

By Stuart Mathieson8 minute readWireshark + tsharkUpdated 12 October 2026
The quick way

Upload the capture and PCAPNG Analyzer gathers the visible TLS metadata into one view: server names (QUIC included), versions, cipher suites, certificate details and JA4/JA3 client fingerprints. In Pro, legacy versions, weak ciphers, expired or self-signed certificates and name mismatches are flagged and explained.

Just need the names? The free PCAP Toolkit lists a capture’s TLS and QUIC server names in your browser, without uploading the file.

See a sample incident report →
In this guide
  1. Find TLS handshakes
  2. Extract SNI
  3. Inspect certificates
  4. Understand the limits
  5. Manual vs automated workflow

1. Find the handshake, not just port 443

Filtering on tcp.port == 443 misses TLS on non-standard ports and includes protocols such as QUIC that do not use TCP. Start with Wireshark's decoded protocol:

tls.handshake

For a compact tshark inventory:

tshark -r capture.pcapng -Y "tls.handshake" -T fields \
  -e frame.number -e ip.src -e ip.dst \
  -e tls.handshake.type -e tls.handshake.version

If no handshake is visible, the capture may have started after the connection was established, the traffic may use QUIC, the relevant packets may be missing, or the dissector may not recognise the flow as TLS.

2. Extract visible server names

The Server Name Indication extension normally appears in the ClientHello. Filter it with:

tls.handshake.extensions_server_name

Export unique observed names with tshark:

tshark -r capture.pcapng \
  -Y "tls.handshake.extensions_server_name" \
  -T fields -e tls.handshake.extensions_server_name \
  | sort -u

SNI is useful for discovering which named services a client attempted to reach, but it is not proof of the content transferred. One IP can host many names, a connection can fail after ClientHello, and Encrypted ClientHello can hide the real server name.

3. Review versions and cipher suites

Inspect both the client's offered capabilities and the server's negotiated choice. In modern TLS, version negotiation can be represented by the Supported Versions extension rather than the legacy record-layer version field. Rely on Wireshark's interpreted handshake fields rather than reading one raw version value in isolation.

Useful filters include ClientHello messages (type 1), ServerHello messages (type 2) and the negotiated cipher suite:

tls.handshake.type == 1
tls.handshake.type == 2
tls.handshake.ciphersuite

A client offering an old option does not prove it was selected. Conversely, a negotiated legacy version or weak suite deserves context: confirm the handshake completed and identify the server endpoint before escalating.

4. Inspect certificates when they are visible

For TLS versions where the Certificate handshake is visible to the passive observer, Wireshark can decode subjects, issuers, validity dates and subject alternative names. Start with:

tls.handshake.certificate

Check whether the certificate was valid at the time of the capture, not merely today. A self-signed certificate may be intentional on a managed internal service; an expired public-facing certificate may be operationally important. Name mismatches also require the requested hostname, which may be absent or encrypted.

5. Know what passive TLS analysis cannot show

Do not promise decryption from a capture alone.

Application payload inspection requires suitable session secrets or supported key material. Neither a dashboard nor a display filter can recover keys that were never collected.

Manual method vs PCAPNG Analyzer

Manual method

  1. Filter for TLS handshakes.
  2. Inspect ClientHello and ServerHello fields.
  3. Extract visible SNI values.
  4. Review negotiated versions and suites.
  5. Inspect certificates where the protocol exposes them.

With PCAPNG Analyzer

  1. Upload the capture.
  2. Choose See TLS analysis for server names, versions, ciphers, certificates and client fingerprints.
  3. In Pro, review the TLS findings, and add bad fingerprints to your threat-intel lists.
What it shows

Everything a passive observer can see in the handshake, for TCP and QUIC alike (it decrypts QUIC Initial packets, whose keys the protocol derives from the packets themselves). Like any passive tool, it can’t decrypt application data, see through Encrypted ClientHello, or show a TLS 1.3 certificate without the session keys.

Summarise visible TLS metadata locally

Keep the capture on your server and use the Free tier for TLS, DNS and conversation summaries.

Download freeView sample report