Yes — if the client is behind a proxy, that can definitely cause the “unable to get local issuer certificate” error.
Here’s why:
1. Intercepting / SSL inspection proxy
- Some proxies (corporate firewalls, Zscaler, BlueCoat, Palo Alto, etc.) terminate TLS, then re-sign the traffic with their own internal CA.
- The client sees a cert issued by that proxy CA, not the real site.
- If the client’s trust store doesn’t include that proxy’s root CA, validation fails → “unable to get local issuer certificate”.
2. Forward proxy (CONNECT tunnel)
- If the proxy just forwards raw TLS (no inspection), usually no issue.
- But if the proxy alters headers (Host/SNI) or drops part of the certificate chain, the server’s cert may not validate correctly.
3. Transparent proxy / middlebox
- Some devices “peek” into TLS but don’t pass along the full chain → clients only see the leaf cert.
- That also leads to the issuer validation error.
How to confirm if proxy is the problem
Run openssl s_client from behind the proxy and compare to running it directly (bypassing proxy):
openssl s_client -connect example.com:443 -servername example.com -showcerts
If the issuer/subject of the leaf cert changes (e.g. you see “Zscaler Root CA” instead of “Let’s Encrypt”), then the proxy is doing TLS interception.
Fixes if proxy is cause
- Trusted root CA: import the proxy’s root/intermediate CA into the client trust store (system trust, Java cacerts, browser trust store, etc.).
- Bypass proxy for domains where you need direct trust (if allowed by policy).
- Update proxy config so it presents the full chain correctly.
👉 Do you want me to show you exactly how to check if your client’s proxy is re-signing the cert (step-by-step with openssl and comparing cert subjects)?