This is an "in principle" question as I seek to understand the way mTLS is implemented in Istio, and how it works with services that otherwise support mTLS well (such as gRPC).
Consider that I have a cluster with "mtls everywhere" enabled. This effectively tunnels all TCP connections over the mTLS pipe between envoy proxies, and the connection between envoy and the service is in plain text.
However, there are services that require at least TLS connections to envoy proxy; ideally mTLS connections. One of these is gRPC, which requires TLS in order to use its core JWT authentication:
https://grpc.io/docs/guides/auth.html#authenticate-with-google
So, the question becomes:
- Is it possible to have the envoy proxy "snoop" on connections that are otherwise mTLS encrypted at the origin service itself? Ideally using certificates and keys provisioned by Citadel
- Is the solution otherwise to create a new authentication method that ignores the fact it's over plaintext, as it'll be mTLS'd by Istio?
<3 Cheers