BAD SKY.NET

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

A widely used TLS 1.2 cipher suite: ECDHE key exchange with forward secrecy, an RSA certificate and AES-128-GCM.

TLS cipher suiteCode 0xc02f (49199)recommended

What it is

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (code 0xC02F) is a TLS 1.2 cipher suite defined in RFC 5289. Unlike a TLS 1.3 suite, its name spells out every part of the connection: ECDHE (ephemeral elliptic curve Diffie-Hellman) for the key exchange, RSA for the server certificate signature, AES-128 in GCM mode for encryption, and SHA-256 for the PRF that derives keys.

Ephemeral key exchange gives forward secrecy: a stolen server key cannot decrypt traffic recorded earlier. GCM is an authenticated encryption mode, so this suite avoids the padding problems of older CBC suites.

Most websites still use RSA certificates, so this is the TLS 1.2 suite that servers pick most often when TLS 1.3 is not available. RFC 9325 lists it among the recommended TLS 1.2 suites.

Who sends it

Chrome 153 (macOS) browser Sent at position 5
curl_cffi (impersonate chrome) Sent at position 5
curl-impersonate chrome116 Sent at position 5
curl-impersonate ff117 Sent at position 5
curl 8.7 (macOS) Sent at position 19
curl 7.88 (Debian 12) Sent at position 11
Python requests Sent at position 7
Python httpx Sent at position 7
Python httpx (HTTP/2) Sent at position 7
Go net/http Sent at position 2
Node.js fetch Sent at position 4
PHP Guzzle Sent at position 11

Measured on 2026-10-25 against our own test server: sent by 12 of 12 clients. Position counts from 1 and ignores GREASE values.

Why it matters for fingerprinting

Every measured client offers it, but at very different positions: 5th for Chrome and curl_cffi, 2nd for Go net/http, 4th for Node.js fetch, 7th for Python requests and httpx, and 19th for macOS curl. In JA3 the full cipher order is part of the hash, so these differences give each library its own JA3 even when the suite set is similar.

Check whether your client sends it

Open the test from your browser, or call it from your script, and look for TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 in the TLS details.

Run the TLS fingerprint test

FAQ

References

Related