TLS interception
TLS interception is the practice of terminating a client's encrypted connection at a middlebox that reads the plaintext and re-encrypts onward.
TLS interception is the practice of terminating a client’s encrypted connection at a middlebox, reading the plaintext, and opening a second connection onward to the real server. It is two TLS sessions presented to the client as one.
#What has to be true for it to work
The middlebox must present a certificate for the requested name that the client accepts. Certificate validation is defined in RFC 5280, so in practice the operator installs a private root in the client’s trust store and the middlebox issues from it. Without that step the client sees an unknown issuer and refuses.
This is why interception is normal on managed corporate machines and difficult anywhere else. Trust has to be provisioned in advance, on the endpoint.
#What it changes on the wire
- The handshake the server sees is the middlebox’s, not the browser’s. Any JA3-style fingerprint now describes the middlebox.
- The negotiated parameters may be weaker than either endpoint would have chosen alone, since both halves are constrained by the middlebox’s own implementation.
- Client certificates break, because the middlebox does not hold the client’s private key.
- Pinning breaks by design. An application that pins refuses the substituted certificate, which is the intended behaviour.
#Checking whether it is happening
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -subject
If the issuer is a name belonging to your employer, your security appliance or your own machine’s local root, the connection is being intercepted. Compare against the issuer seen from a network you control, because an issuer name alone can be made to look plausible.
This matters when a scraper misbehaves only on one network. An appliance in the path explains a stable set of otherwise baffling symptoms: a fingerprint you did not choose, a protocol version you did not negotiate, and failures confined to one office.
#Commonly confused with
A transparent proxy redirects traffic without client configuration; that alone does not let it read TLS. An HTTP CONNECT proxy carries an encrypted connection without terminating it, so it learns the destination and the byte counts and nothing more. Interception is specifically the case where the middlebox holds both plaintexts.