pub struct AdminTlsConfig {
pub cert: PathBuf,
pub key: PathBuf,
pub ca: PathBuf,
}Expand description
mTLS material for the membership-admin gRPC server (PEM file paths,
read at build()). Presence on an OpenraftConfig turns the admin port
into mutual TLS: cert/key is this node’s admin-server identity; ca
verifies connecting admin clients (operators dialing via tsoracle admin).
Security contract: the admin CA MUST be issued from a CA chain independent
of the peer CA. Anyone holding a cert signed by the configured admin CA can
change cluster membership (AddLearner / Promote / RemoveNode). build
enforces the trivial form of this — it rejects sharing the same CA file
(by path or by byte content) — but it CANNOT detect two distinct CA files
where one is in the trust chain of the other, or both chained under a
shared root. Issuing the two CAs from independent roots is the operator’s
responsibility.
Fields§
§cert: PathBuf§key: PathBuf§ca: PathBufTrait Implementations§
Source§impl Clone for AdminTlsConfig
impl Clone for AdminTlsConfig
Source§fn clone(&self) -> AdminTlsConfig
fn clone(&self) -> AdminTlsConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for AdminTlsConfig
impl RefUnwindSafe for AdminTlsConfig
impl Send for AdminTlsConfig
impl Sync for AdminTlsConfig
impl Unpin for AdminTlsConfig
impl UnsafeUnpin for AdminTlsConfig
impl UnwindSafe for AdminTlsConfig
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§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