certz: clarify that Rotate RPCs not be interrupted by TLS->mTLS transitions - #272
certz: clarify that Rotate RPCs not be interrupted by TLS->mTLS transitions#272brianneville wants to merge 1 commit into
Conversation
|
I’m not sure this should be enforced at the proto level. This behaviour seems tied to how a specific implementation handles TLS → mTLS transitions, rather than a fundamental API constraint. |
so can you explain how this would be accomplished exactly given the current technologies available? |
Sure. Before diving into gRPC internals, I should note that I don’t have full visibility into the specific implementation details (e.g., language, runtime, or gRPC version) used by other vendors, so their observed behaviour may be influenced by those factors. In the gRPC core stack, server credentials can either be provided at startup or dynamically via grpc_ssl_server_credentials_create_options_using_config_fetcher(), where the application receives callbacks to update certificates/CA as needed. For comparison, systems like NGINX handle TLS → mTLS transitions via config updates followed by a graceful reload (nginx -s reload), which does not drop existing connections. More broadly, neither OpenSSL nor the TLS protocol itself mandates that such a transition must terminate existing connections. That said, if there are any references or specifications that suggest otherwise, I’d really appreciate it if you could share them. I’d be happy to take a closer look. We’ve also verified in our implementation that TLS → mTLS transition works gracefully via certz.Rotate, so this behaviour does not appear to be generally applicable. |
…itions If a server is moved from TLS -> mTLS (i.e. by rotation of a trust_bundle to a particular SSL profile which did not previously have a trust_bundle assigned), then the server may require a reload to apply these changes. Such a reload would interrupt the Certz Rotate RPC if it was ongoing via that server. Clarify here that servers should explicitly not allow this to occur.
d49cb0f to
4f2c12e
Compare
If a server is moved from TLS -> mTLS (i.e. by rotation of a trust_bundle to a particular SSL profile which did not previously have a trust_bundle assigned), then the server may require a reload to apply these changes.
Such a reload would interrupt the Certz Rotate RPC if it was ongoing via that server.
Clarify here that servers should explicitly not allow this to occur.