結論:TLS 終端の位置で決まる
[Client] ──TLS handshake──▶ [ ここで ClientHello を見た者だけが JA4 を計算できる ]
JA4 を計算するには 生の ClientHello バイト列が必要です。TLS を復号した後の平文 HTTP しか見ていないプロセスは、後から JA4 を組み立てられません。
JA4 取得、LB 設定、対応 distro、よくある質問。
JA4 fingerprint は、TLS handshake (ClientHello) から取り出すクライアントの「指紋」です。攻撃ツールごとに決まっていて、IP / 国 / VPN / User-Agent を切り替えても変わりません。
ただし JA4 を取得できるかどうかは、「誰が TLS handshake を最初に受け取るか (TLS 終端の位置)」で決まります。このページでは代表的な構成パターンごとに可否を一覧します。
[Client] ──TLS handshake──▶ [ ここで ClientHello を見た者だけが JA4 を計算できる ]
JA4 を計算するには 生の ClientHello バイト列が必要です。TLS を復号した後の平文 HTTP しか見ていないプロセスは、後から JA4 を組み立てられません。
JA4 を計算するには 生の ClientHello バイト列が要るので、可否は TLS をどこで終端するか(= クライアントの ClientHello を最初に見る点)と unmask のモード(native / forward-auth)だけで決まります。後段のアプリは無関係です。
● = unmask インストールノード ★ = TLS 終端 (ここで ClientHello を見る)
| 構成 (クライアント → …) | JA4 | unmask 設定 |
|---|---|---|
| ① 前段に LB (unmask 同居) +後段アプリ — unmask が TLS 終端 | ||
| ★●LB nginx (native) → httpd | 可 | なし (プラグインが算出) |
| ★●LB nginx (forward-auth) → httpd | 不可 | — ClientHello を見る役がいない |
| ★●LB apache (forward-auth) → httpd | 不可 | — |
| ② アプリ直 — unmask が TLS 終端 | ||
| ★●nginx (native) | 可 | なし |
| ★●nginx (forward-auth) | 不可 | — |
| ★●apache (forward-auth) | 不可 | — |
| ③ 前段 (CDN / LB) が TLS 終端 (Cloudflare / GCP HTTPS LB / AWS ALB・CloudFront 等) +後段アプリ | ||
| ★CDN → ●LB nginx (native) → httpd | 可 | 「信頼する LB / CDN」で選択 |
| ★CDN → ●LB nginx (forward-auth) → httpd | 可 | 「信頼する LB / CDN」で選択 |
| ★CDN → ●LB apache (forward-auth) → httpd | 可 | 「信頼する LB / CDN」で選択 |
| ④ 前段 (CDN / LB) が TLS 終端 + unmask 直 | ||
| ★CDN → ●nginx (native) | 可 | 「信頼する LB / CDN」で選択 |
| ★CDN → ●nginx (forward-auth) | 可 | 「信頼する LB / CDN」で選択 |
| ★CDN → ●apache (forward-auth) | 可 | 「信頼する LB / CDN」で選択 |
unmask-plugin-nginx。C モジュールが ClientHello を直接解析して JA4 を算出 (最速・サブリクエスト無し・CentOS 6 等の古い distro でも動作)。JA4 を使うならこれ。auth_request / Apache mod_lua に委譲。自分で TLS を見ないので、前段 (CDN / LB) が JA4 を転送しない限り JA4 は空 (UA / IP / rate / honeypot で運用)。X-Client-JA4 だけを採用する」gate を生成し、同梱の server.inc がその gate 済みの値を自動で /api/check へ渡す (トグルも手作業の配線も不要)。手順 → LB / CDN 設定。JA4 が空でも unmask は動作します。bot 判定は以下のシグナルで続行されます。
OR で適用 (どちらかが一致すれば素通し)unmask-plugin-nginx (native mode)。nginx が TLS を終端していることインストール手順は インストールガイド を参照してください。