Nice.
FYI, this script doing its own certificate lookup risks reaching a
server providing a different server-cert than the one Squid connects to.
Same problem as seen when allowing clients based on future dst-IPs.
IMO this would be a good reason for adding a "server_cert" ACL type, to
match server certificate attributes like the existing "user_cert" type
does for client certs. It needs to be the "fast"/synchronous type of ACL
to be used by ssl_bump access control.
Cheers
Amos
On 11/02/2026 09:03, NgTech LTD wrote:
Hey,
I have been wondering to what websites we can disable tls inspection
automatically.
There are sites like banks which has EV certificates.
It's pretty easy to just allow these sites to not be bumped by squid or
any other DPI systems.
In the past I had an issue with couple appliances which implement DPI
and TLS inspection.
All of them automatically inspect banks and many other sites without any
way other then
manually adding specific domains or ip addresses to the exceptions list.
I have the next example script in python:
```
import ssl
import socket
from cryptography import x509
def analyze_site_security(hostname):
# 1. Define the standard EV OID
EV_OID = "2.23.140.1.1"
context = ssl.create_default_context()
try:
with socket.create_connection((hostname, 443), timeout=5) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as
ssock:
# Get the binary certificate
bin_cert = ssock.getpeercert(binary_form=True)
cert = x509.load_der_x509_certificate(bin_cert)
# Extract Organization and Policy OIDs
subject = cert.subject
org_name = next((attr.value for attr in subject if
attr.oid.dotted_string == "2.5.4.10"), "N/A")
# Check for EV OIDs in extensions
is_ev = False
try:
policies =
cert.extensions.get_extension_for_oid(x509.oid.ExtensionOID.CERTIFICATE_POLICIES)
for policy in policies.value:
if policy.policy_identifier.dotted_string ==
EV_OID:
is_ev = True
except:
pass
return {
"site": hostname,
"is_ev_certified": is_ev,
"organization": org_name,
"tls_version": ssock.version(),
"likely_pci_entity": is_ev and (ssock.version() in
['TLSv1.2', 'TLSv1.3'])
}
except Exception as e:
return {"error": str(e)}
# Testing it out
print(analyze_site_security("www.paypal.com <http://www.paypal.com>"))
print(analyze_site_security("www.google.com <http://www.google.com>"))
```
It can be converted and modify a bit to be an external_acl helper or
external service that will get couple details on the connection like ip
address+port+domain and will just trigger a tls inspection bypass for
the relevant sites automatically.
I hope it helps anyone.
Eliezer
----
אליעזר קרויטורו
תמיכה טכנית, משיב הרוח ומוריד הגשם
נייד: 052-8704261
מייל: [email protected] <mailto:[email protected]>
_______________________________________________
squid-users mailing list
[email protected]
https://lists.squid-cache.org/listinfo/squid-users
_______________________________________________
squid-users mailing list
[email protected]
https://lists.squid-cache.org/listinfo/squid-users