My company uses SSL certificate authentication via a whitelist of certificates allowed to connect to user services in Apache, however, we now want to have this same functionality in our Ingress Gateway, I was wondering if there’s a way to do this with any of the following:
EnvoyFilter
Mixer Policy
mTLS configuration
I’ve been using Istio for our internal mesh so far and don’t have much experience with Gateways.
Ingress Gateway checks certificate fingerprint against a whitelist
2.1) If fingerprint exists in whitelist (populated by a secret), request enters the cluster
2.2) If fingerprint doesn’t exist, request is rejected
My investigation has led me to either an EnvoyFilter (native to Istio/Envoy) or using Gloo with a function level route that will check this, however, I’d like to keep Istio’s Ingress Gateway if possible.
I’m also curious what’s the use case here? Would you mind to provide some more context about why do you want to use fingerprint here? Would it make sense to support this in the authorization level?
Our use case is fairly specific (or at least I think so), our clients are banking institutions which are notoriously slow to adopt new technologies, which makes adopting JWT or even OAuth very difficult, the particular service that is going to implement this is going to be called from a Cobol application that won’t support any form of authentication.
We also decided against Basic auth or API keys because our clients rarely secure them or use them correctly (that’s without taking into account all security issues).
We don’t have a specific requirement for it to be a fingerprint auth, what we need is client authentication via SSL certificates (this would include mTLS + checking client identity via SSL certificate), which, to my understanding isn’t fully done by enabling mTLS.
I think it if Istio could auth against an IP/Cert hash/Cert fingerprint list would be great, but I can’t ascertain how popular would that auth method be.