TTechclick All lessons
Zscaler · Batch 11 · Lesson 6L3 / TROUBLESHOOTING

SSL Inspection & File Type Control — what ZIA sees inside encrypted traffic

95% of internet traffic is now TLS-encrypted. Without SSL Inspection, ZIA only sees domain names — meaning no URL-path filter, no malware scan of file payloads, no DLP. SSL Inspection turns ZIA into a controlled man-in-the-middle: decrypt, inspect, re-encrypt. Then File Type Control adds the second layer: yes, the file is clean, but is it an .exe? a .zip? from a user who shouldn't be downloading executables? This lesson covers the cert chain, Zscaler Root CA distribution, MITM mechanics, pinned-app exemptions, and the file-type rules that catch what URL filtering misses.

📅 May 24, 2026 · ⏱ 16 min read · 🏷 10-question assessment included
🎯 By the end of this lesson, you'll be able to

Why this lesson matters

Run any 5 minutes of tcpdump on a corporate gateway and you'll see almost everything is TLS — HTTPS, IMAPS, SMTPS, even QUIC. Without SSL Inspection, ZIA's view of an HTTPS request is limited to the TLS SNI (the destination domain). It cannot read the URL path, the HTTP method, headers, request body, response body, or attached files. Every advanced ZIA feature — DLP, malware scan, sandbox detonation, full URL Filtering — depends on SSL Inspection being on.

SSL Inspection also breaks things if you do it wrong. Banking apps pin their certificate; sandbox-detecting malware checks cert chains; some old apps use mutual TLS that breaks completely. Hence the second half of this lesson — exemptions and File Type Control as the safety net.

The TLS handshake — normal vs ZIA-inspected

In a normal HTTPS connection, your browser does a TLS handshake directly with the destination server (e.g. github.com). The server returns its cert, your browser validates the chain to a trusted Root CA in the OS store, and the session is established.

With SSL Inspection enabled, ZIA's PSE intercepts the handshake. The PSE is now a proxy in two directions: one TLS session to the user, one to the destination. To make this work transparently, ZIA generates a fresh certificate on the fly that mimics the destination — but signs it with the Zscaler intermediate CA. The user's browser validates that chain against the Zscaler Root CA which you must pre-install on every endpoint. Without the root in the trust store, every HTTPS site shows a certificate warning. Hence the deployment dependency.

SSL Inspection — ZIA as transparent MITM
SSL Inspection two-legged TLS handshake User Browser establishes TLS with PSE which presents a Zscaler-signed cert for the destination. PSE separately establishes TLS with the destination origin server using the original cert. Two encrypted legs joined inside the PSE for inspection. User Browser ZIA PSE (MITM) github.com LEG A 1. ClientHello + SNI=github.com 2. ServerHello + Cert: github.com issued by Zscaler Intermediate CA 3. Validates Zscaler Root in OS trust store ✓ → key exchange → encrypted Leg A LEG B 4. PSE acts as client: ClientHello + SNI=github.com 5. ServerHello + Real github.com cert issued by public CA 6. PSE validates public CA ✓ → key exchange → encrypted Leg B Inside PSE: decrypt Leg A → SSMA inspect → re-encrypt to Leg B

Two completely separate TLS sessions. The browser trusts ZIA because the Zscaler Root CA is in its OS trust store. ZIA trusts the origin because it validates the public CA chain itself. Inside the PSE, the cleartext briefly exists for SSMA inspection — URL filter, malware scan, DLP — then is re-encrypted on Leg B.

The Zscaler Root CA — distribution is mandatory

If the Zscaler Root CA isn't in the user's OS trust store, every single HTTPS site shows a "Your connection is not private — NET::ERR_CERT_AUTHORITY_INVALID" warning. So distribution is not optional — it's the first thing you do before turning SSL Inspection on for a single user.

Distribute via your MDM / endpoint mgmt tool

EndpointMethodCert location after install
Windows (domain-joined)GPO → Computer Config → Windows Settings → Security Settings → Public Key Policies → Trusted Root Certification Authorities → Import the Zscaler Root .cerLocal Computer → Trusted Root Certification Authorities
Windows (Intune-managed)Intune → Devices → Configuration Profiles → Trusted certificate → upload Zscaler Root .cer → assign to device groupLocal Computer → Trusted Root Certification Authorities
macOSJamf → Configuration Profiles → Certificate payload → upload .cer → "Always Trust" policySystem keychain → Certificates (Always Trust for SSL)
iOS / iPadOSMDM profile → Certificate payload → "Use as a trusted root"Settings → General → About → Certificate Trust Settings (must be manually enabled by user — friction point)
Android (managed)Intune / Workspace ONE → Certificate profile → CA category → pushSettings → Security → Trusted credentials (User tab)
Firefox (any OS)Firefox uses its OWN cert store — separate from OS! Set security.enterprise_roots.enabled=true in about:config OR push via Firefox CCK to read from OS storeFirefox internal cert DB
Linux (servers / dev)Copy .cer to /usr/local/share/ca-certificates/ + sudo update-ca-certificatesSystem CA bundle
Common Mistake — Firefox forgotten

Firefox uses its own cert store, independent of the OS. You can push the Zscaler Root via GPO/Intune and Chrome/Edge will work fine — but Firefox users keep seeing cert errors. Either enable security.enterprise_roots.enabled=true via a Firefox enterprise policy (firefox.cfg or autoconfig.js), or manually push the cert to each Firefox profile. This catches every team at least once.

Pinned applications — when SSL Inspection breaks the app

Some apps don't trust your custom Root CA — they ship with a hard-coded "I will only ever trust THIS specific cert" rule. This is called certificate pinning, and it's intentional. Banking apps pin so even a compromised root CA can't MITM the customer. SDK-based mobile apps (Facebook, Twitter, Instagram) pin so even a corporate proxy can't see their traffic.

When ZIA MITMs a pinned app, the app rejects the Zscaler-issued cert and refuses to connect. The user sees "cannot connect" or the app silently fails. Current (2026) pinners you must plan for:

Webex/Zoom/Teams media plane: These apps break under SSL Inspection not because of cert pinning but because their media (audio/video) uses UDP-based SRTP that ZIA can't proxy at all. Bypass the media subdomains (e.g. *.webex.com, *.zoom.us, *.teams.microsoft.com) — and use the Zscaler-published bypass templates for these vendors.

The fix: SSL Inspection exemption list

ZIA ships an actively-maintained list of known pinned apps (Recommended Bypass list). Enable it, then add any custom apps you discover in your environment. Exempted destinations skip Leg A's MITM and pass through with TLS preserved — but you lose all visibility into that traffic.

ZIA · SSL Inspection exemption configuration
Policy → SSL Inspection → SSL Inspection Policy → + Add Rule

  Order:         5  (high priority — runs before generic Inspect rule)
  Name:          Bypass-Pinned-Apps
  Action:        Do Not Inspect
  URL Categories: (none — using App list)
  Cloud Applications: Microsoft Teams (media), Cisco Webex, Apple iCloud,
                      Banking, Microsoft Authenticator, WhatsApp Desktop
  User-defined URLs: banking.hdfc.com,
                     authenticator-api.microsoft.com,
                     *.webex.com, *.teams.microsoft.com
  Action on inspection failure: Bypass (don't break the app)

Then add a default "Inspect everything else" rule at Order 100.

SSL Inspection rule structure

Like URL Filtering, SSL Inspection is rule-ordered. Most tenants use this 3-rule pattern:

OrderNameActionMatch
5Bypass-Healthcare-BankingDo Not InspectCategories: Banking, Healthcare; Pinned apps
10Bypass-Executive-PersonalDo Not InspectGroup: Executives (privacy carve-out)
20Inspect-All-ElseInspectEverything

QUIC and HTTP/3 — the 2025+ blind spot

QUIC encrypts the transport itself (not just the payload), which would render SSL Inspection useless. ZIA's response: block QUIC by default (UDP/443) and force clients to fall back to TCP/443 where ZIA can MITM. If you allow QUIC outbound, you're letting traffic bypass inspection silently. Check this on every tenant.

🔒HSTS Preload — the unbypassable list

HSTS Preload — sites on the HSTS preload list (github.com, paypal.com, many banks) cannot be MITM'd even with a click-through cert warning. If 5% of your fleet doesn't have the Zscaler root cert installed, those sites are hard-broken with no override. Standard outage cause.

File Type Control — the second layer

Even with full SSL Inspection, you might allow a category that lets dangerous files through. "Allow Software Downloads" sounds reasonable until an engineer downloads a cracked .exe from a personal site. File Type Control adds a per-MIME-type filter on top of URL/Cloud App rules.

The classic 4 rules

File categoryDefault actionOverride examples
Executables (.exe, .msi, .dmg, .bat, .ps1, .sh)BlockAllow for IT group from specific approved sites only
Scripts (.js, .vbs, .ps1, macro-enabled .docm/.xlsm)Caution + SandboxSandbox before allowing through to the user
Archives (.zip, .rar, .7z, .tar.gz)Allow + Sandbox if password-protectedPassword archives often hide malware — force sandbox
Multimedia / images (.jpg, .mp4)AllowBandwidth cap if abused

MIME validation — don't trust the extension

An attacker renames payload.exe to resume.pdf hoping ZIA matches "PDF allowed" rule. File Type Control checks the actual file magic bytes (MIME signature), not just the extension. A Windows PE binary always starts with MZ bytes — File Type Control catches that regardless of filename. Always enable "Detect File Type by Content" (exact ZIA portal label) in the rule.

File Type Control rule — block executables
Policy → URL & Cloud App Control → File Type Control → + Add Rule

  Order:                10
  Name:                 Block-Executables-Universal
  Action:               Block
  File Types:           Windows Executable (PE), macOS Executable (Mach-O),
                        Linux Executable (ELF), Installer Package (.msi, .pkg, .dmg),
                        Script (.bat, .ps1, .vbs, .sh)
  Traffic Direction:    Upload / Download / Both  (dropdown)
  Detect File Type by Content: Yes  (MIME magic, not extension)
  Group:                All EXCEPT IT-Team
  Notification:         Yes  (user sees "blocked .exe from ")

Then optional Order 5 Allow for IT-Team from approved repos.
💡Pro Tip — pair File Type Control with Sandbox

For "allowed but risky" file types (archives, Office macros, PDFs from new sources), don't just allow — pair the URL/File rule with Zscaler's Cloud Sandbox. The file is detonated in a VM before being delivered. Verdict comes in 1–5 seconds; if clean, user gets the download; if bad, blocked + logged. This catches zero-day malware that signature-based AV misses.

Common SSL Inspection breakages and fixes

Common Mistakes — SSL Inspection
Verify — confirm SSL Inspection is working correctly

After enabling SSL Inspection on a test group:

SSL Inspection Troubleshooting Lab Cert Chain Walkthrough

Real-world scenario — Monday morning rollout breaks Slack

You enabled SSL Inspection company-wide over the weekend after distributing the Zscaler Root CA via Intune. Monday morning, the engineering team can't reach Slack desktop. Web browsers work fine — only the Slack native client fails.

Your debug path:

  1. Reproduce on your own laptop: https://slack.com in browser works (Zscaler-issued cert visible). Slack desktop app fails to connect.
  2. Hypothesis: Slack desktop pins its certificate. Confirm by running tcpdump on the loopback during a Slack connect attempt — you see a TLS handshake start, then immediate FIN from Slack process.
  3. ZIA → Insights → Web → filter by destination=slack.com → see the connection attempt logged as "TLS handshake failed — cert verify failed (client rejected)".
  4. Fix: Add Slack to the SSL Inspection bypass rule (Order 5).
  5. Activate. Wait 60s. Test Slack desktop — connects immediately.
  6. Update the runbook: add to the "Pinned Apps — Always Bypass" list. Next time you onboard a tenant, this rule is already in the template.

Total time from ticket to resolution: ~15 minutes once you've seen the pattern. The lesson: every new SSL Inspection rollout should pilot for a week with engineering + sales (highest pinned-app usage) before going to the full company. That week catches 95% of the pinned-app failures with minimal blast radius.

📌 Quick reference (memorise — final lesson of the Forwarding-Auth-Policy arc)

QUICK LAB · ~15 MIN

Tune SSL Inspection bypass list:

  1. From a laptop with Zscaler root cert installed, browse to https://www.microsoft.com — verify "Issuer: Zscaler..." in cert chain.
  2. Now browse to https://outlook.office.com — verify it's bypassed (issuer = Microsoft, not Zscaler).
  3. Test a media-plane app: open Webex Meeting → check call quality. If choppy, add *.webex.com to bypass.
  4. Trigger EICAR test: curl https://secure.eicar.org/download/eicar.com — should be blocked by ZIA.

📝 Check your understanding

10 scenario questions — interview + ZDTA exam depth. Pick one answer per question. You need 70% (7 of 10) to mark this lesson complete on your profile.

Q1

Without SSL Inspection enabled, ZIA can match which of these against an HTTPS request?

Correct: (b). TLS encrypts everything after the handshake. The SNI in ClientHello is the one field sent in cleartext, which is why URL Filtering can still match by domain — but URL path, HTTP method, request body, response body, and file contents are all hidden until SSL Inspection terminates the TLS. (a) requires Inspection. (c) is encrypted. (d) the SNI is more useful than fingerprint matching.
Q2

You enabled SSL Inspection for the engineering test group. Suddenly every user gets a "NET::ERR_CERT_AUTHORITY_INVALID" warning on every HTTPS site. What did you forget?

Correct: (c). The Zscaler Root CA must be in the endpoint trust store before MITM works transparently. Without it, every Zscaler-signed cert is "untrusted issuer" and the browser blocks. Always distribute via MDM (Intune/Jamf/GPO) first, verify on test endpoints, then turn on Inspection. (a) wouldn't cause this exact error. (b)/(d) are unrelated.
Q3

You distributed the Zscaler Root CA via Intune to all Windows laptops. Chrome and Edge work fine. Firefox users complain every HTTPS site shows cert warnings. Why?

Correct: (a). Firefox's independent cert store is a famous footgun. Always plan for Firefox separately when distributing CAs. The security.enterprise_roots.enabled=true preference makes Firefox read OS-trust additions. Push via Firefox enterprise policy file (autoconfig.js). (b)/(c)/(d) don't fix the root cause.
Q4

Slack desktop app fails to connect after SSL Inspection rollout. Web browsers work fine. What's the root cause and the right fix?

Correct: (c). Even though Slack dropped strict pinning when it shifted to Electron, legacy installs and certain API endpoints still misbehave under MITM. Add to bypass and verify with a fresh client. Always add common pinned apps (banking apps, Apple services, MS Authenticator, WhatsApp Desktop) on day 1. (a) doesn't change pinning behaviour. (b) wouldn't help — pinning ignores trust additions. (d) blocks legitimate work.
Q5

An attacker renames a malicious payload.exe to resume.pdf and uploads it as a "resume". Your File Type Control allows PDFs but blocks .exe. Will ZIA block it?

Correct: (d). File Type Control with MIME-by-magic-bytes detection is exactly the defence against this attack. Windows PE binaries start with MZ (Mark Zbikowski's initials, original MS-DOS engineer) — that signature is unmistakable. ZIA reads it regardless of filename. Always turn on "Detect File Type by Content" — extension-only detection is bypassable in 5 seconds. (a)/(b) ignore content-based detection. (c) SSL Inspection is needed to even see the file content if it's HTTPS.
Q6

Compliance team asks: "are we MITMing customer banking traffic and seeing their account balances?" What's the correct policy?

Correct: (b). Banking and healthcare are universal bypass categories — a privacy and (in many jurisdictions) legal requirement. Verify by checking cert issuer on the bank URL; should be the bank's CA, not Zscaler. (a) violates regulations like GLBA, HIPAA, GDPR. (c)/(d) are nonsense distractors.
Q7

User downloaded a password-protected ZIP file. AV scan can't read the encrypted archive. What is the actual ZIA Cloud Sandbox behavior?

Correct: (b). Wrong. ZIA Cloud Sandbox does NOT brute-force archive passwords. When it encounters a password-protected archive, it either blocks outright OR (Advanced tier) prompts the user to provide the password for inspection. Brute-forcing is a myth — don't say this in an interview. (a)/(c) are common-but-wrong distractors students cite. (d) is nonsense.
Q8

SSL Inspection rule order is critical. Which order is correct?

Correct: (a). Same first-match logic as URL Filtering. Bypass exceptions go ABOVE generic Inspect rules — otherwise the generic rule fires first and MITMs everything (breaking banking + pinned apps). (b) is the inverted broken order. (c)/(d) ignore ZIA's evaluation model.
Q9

You want to confirm SSL Inspection is actually working on a test endpoint. What's the cleanest test?

Correct: (c). The cleanest validation — view the cert chain in any browser. Inspected sites show Zscaler in the chain; bypassed sites show the original public CA. Tells you both "inspect works" and "bypass works" in 5 seconds. (a)/(b)/(d) tell you nothing about SSL Inspection.
Q10

You're rolling out SSL Inspection to 4000 users next month. What's the safest sequencing?

Correct: (d). The production pattern — cert distribution + verification + pilot + tranche rollout. The pilot week catches 95% of pinned-app issues with minimum blast radius. (a) is a Monday-morning disaster. (c) leaves a 20-hour security gap. (b) is hostile to users + impractical at scale.
Lesson complete — saved to your profile.
Almost! Review the sections above and try again — you need 70% (7 of 10) to mark this lesson complete.

What's next — Lesson 7

Lessons 1–6 covered the foundation, architecture, forwarding, identity, policy, SSL — everything you need to operate ZIA. Next we shift from ZIA into the rest of the security stack: Threat Protection (ATP, Cloud Sandbox, IPS, AV, Browser Isolation, Page Risk Score). The "what catches the actual malicious payload" stack.