pub enum GrpcTls {
SelfMinted,
}Expand description
How the gRPC control plane gets its mutual TLS material.
The mirror of [HttpTls], with one difference that is the whole point: the
smart-HTTP listener terminates TLS to encrypt, and this one terminates TLS
to identify. So there is no bring-your-own-CA arm here yet. A certificate
the gate can turn into a principal has to have been registered in the ACL
table, and the only thing that mints and registers in one act is this
server’s own issuer (Bootstrap.Enroll, gunnar control bootstrap).
Trusting a foreign CA would mean a certificate that passes the handshake and
can never pass the gate, which is a confusing way to be refused.
Variants§
SelfMinted
Mint the listener’s own leaf from this server’s issuer at start, and pin that issuer as the CA every client certificate must come from.
Refuses to start if it cannot mint. A control plane that asked for
client certificates and came up without them would be the same silent
downgrade [HttpTls] refuses.
Trait Implementations§
impl Copy for GrpcTls
impl Eq for GrpcTls
impl StructuralPartialEq for GrpcTls
Auto Trait Implementations§
impl Freeze for GrpcTls
impl RefUnwindSafe for GrpcTls
impl Send for GrpcTls
impl Sync for GrpcTls
impl Unpin for GrpcTls
impl UnsafeUnpin for GrpcTls
impl UnwindSafe for GrpcTls
Blanket Implementations§
impl<T> Allocation for T
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request