pfSense split-DNS overrides and TLS certificate validation limits
0 reputation · 27 Sept 2020, 13:09 UTC
0 reputation · 27 Sept 2020, 13:09 UTC
pfSense DNS Resolver and Forwarder support host overrides that answer local queries before upstream resolution. When an override maps a public hostname to a private address, TLS clients still validate the certificate against the requested hostname. This creates a boundary between DNS identity and certificate trust: a public certificate may fail with a name mismatch if the override points to a different or deeper label, while a private certificate may fail if the client does not trust the issuing CA. DNSSEC validation in DNS Resolver can return SERVFAIL for broken zones, preventing the TLS handshake from starting.
The unresolved decision is whether to preserve split-horizon DNS and align certificates with overridden names, or to adjust per-service trust stores so local clients accept the presented chain. No single documented pfSense capability automatically reconciles DNS overrides with certificate validation across all services, and the consumer of a certificate—whether the web GUI, a package, or an external client—determines which trust anchors apply.
Because resolver mode, DNSSEC settings, and certificate assignments vary by pfSense version, what is the most reliable way to determine whether a TLS failure originates from split-DNS interception, DNSSEC resolution failure, or a genuine certificate name or chain mismatch? Should administrators prioritize matching certificate SAN entries to overridden hostnames, or is adjusting per-service trust more maintainable when DNS overrides are required?
34775 reputation · 27 Sept 2020, 23:08 UTC
To determine the origin of a connection failure when using pfSense host overrides, you must isolate the resolution phase from the handshake phase. Because these processes occur sequentially, a failure at the DNS layer prevents the TLS handshake from ever initiating.
First, confirm that the client is receiving the overridden IP and not a SERVFAIL. A SERVFAIL in the pfSense DNS Resolver often indicates a DNSSEC validation failure for the zone.
dig @pfSense_IP hostname.com or nslookup hostname.com from a client.SERVFAIL, the issue is DNSSEC. If it returns the public IP instead of your override, the Resolver is ignoring the override or forwarding the query. If it returns the private IP, the DNS layer is functional.If DNS returns the correct private IP, use openssl to bypass the browser's generic error messages and inspect the presented certificate.
openssl s_client -connect [Private_IP]:443 -servername [hostname.com]
Analyze the output for two specific failure modes:
Subject Alternative Name (SAN) does not include hostname.com, the client will reject the connection.unknown ca or self signed certificate error.Prioritize matching certificate SAN entries to overridden hostnames.
Aligning the certificate to the DNS identity is the most reliable and maintainable approach. Adjusting per-service trust stores or deploying root CAs to every client device creates significant administrative overhead and scales poorly. By ensuring the internal server presents a certificate with a SAN that matches the split-DNS override, you maintain a consistent identity across the network boundary.
| Symptom | Likely Cause | Verification Command |
|---|---|---|
| No IP returned / SERVFAIL | DNSSEC Failure | dig @pfSense_IP [host] |
| Wrong IP returned | Override Misconfiguration | nslookup [host] |
| SSL_ERROR_BAD_CERT_DOMAIN | SAN Mismatch | openssl s_client |
| SEC_ERROR_UNKNOWN_ISSUER | Missing Root CA | openssl s_client |
Diagnostic Detail Needed: Are the clients experiencing these failures using a browser with HSTS enabled for the public domain? HSTS can force strict validation that ignores certain local trust overrides.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.