envoyproxy / envoyproxy/envoy

On-demand upstream certificates

Open
#41,888 0 comments 3 reactions 0 assignees View on GitHub
area/sds enhancement no stalebot
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 22h
Merged PRs (30d)
430

Description

Current mechanisms in Envoy don't allow dynamically picking a cert in the upstream cluster. Transport socket matching gets there half-way, but they still require updating and draining the cluster to add a cert. In a multi-tenant deployment, if we want to use a single cluster definition for all tenants, we have to be able to load a cert without having it in the cluster definition.

For this to work, we need some way to asynchronously fetch secret config to create an upstream TLS socket to the upstream host. That means that before sending "client hello", the socket should request a cert based on the transport socket options, and then proceed to the handshake. We could use the transport socket timeout to handle the failed handshakes due to the failures to fetch the secret. SDS might be one way to complete the asynchronous cert request, but certificate provider or certificate selector would also work.

Thoughts? @ggreenway @wbpcode @agrawroh

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.