pub struct AcmeConfig {
pub domains: Vec<String>,
pub email: String,
pub directory_url: String,
pub cert_path: String,
pub key_path: String,
pub challenge_port: u16,
pub renew_before_days: Option<i64>,
pub profile: Option<String>,
pub account_key_path: String,
pub challenge: ChallengeType,
pub dns: Option<DnsConfig>,
}acme only.Expand description
ACME provisioning configuration.
Fields§
§domains: Vec<String>DNS names to include in the certificate (first entry is CN).
email: StringContact email address for the CA.
directory_url: StringACME directory URL. Defaults to Let’s Encrypt production.
cert_path: StringPath to write the provisioned certificate chain (PEM).
key_path: StringPath to write the certificate’s private key (PEM).
challenge_port: u16Port for the temporary HTTP-01 challenge server (default 80).
renew_before_days: Option<i64>Renew this many days before expiry. None (the default): at
two-thirds of the certificate’s lifetime, or earlier when the CA’s
renewal information (RFC 9773) says so.
profile: Option<String>Certificate profile to order (draft-ietf-acme-profiles), e.g.
shortlived; None lets the CA choose.
account_key_path: StringPath to persist the ACME account key between restarts.
challenge: ChallengeTypeHow control of the domains is proven (since 18.4.0; Http01 before).
dns: Option<DnsConfig>DNS settings; Some exactly when challenge is Dns01 or
DnsPersist01 (then only where to look the record up).
Implementations§
Source§impl AcmeConfig
impl AcmeConfig
Sourcepub const LETSENCRYPT: &'static str = "https://acme-v02.api.letsencrypt.org/directory"
pub const LETSENCRYPT: &'static str = "https://acme-v02.api.letsencrypt.org/directory"
Let’s Encrypt production ACME directory.
Sourcepub const LETSENCRYPT_STAGING: &'static str = "https://acme-staging-v02.api.letsencrypt.org/directory"
pub const LETSENCRYPT_STAGING: &'static str = "https://acme-staging-v02.api.letsencrypt.org/directory"
Let’s Encrypt staging ACME directory (no real certificates; for testing).
Sourcepub fn from_env() -> Option<AcmeConfig>
pub fn from_env() -> Option<AcmeConfig>
Build config from environment variables. Returns None when
RWS_CONFIG_ACME_DOMAINS is not set or empty.
Sourcepub fn install_as_tls_certificate(&self)
pub fn install_as_tls_certificate(&self)
Point the TLS listener at this config’s certificate: sets
RWS_CONFIG_TLS_CERT_FILE / RWS_CONFIG_TLS_KEY_FILE to cert_path /
key_path when they’re empty, so setting only RWS_CONFIG_ACME_DOMAINS
is enough for Server::run_tls to serve the issued certificate. An
explicitly configured TLS path is left alone.
Trait Implementations§
Source§impl Clone for AcmeConfig
impl Clone for AcmeConfig
Source§fn clone(&self) -> AcmeConfig
fn clone(&self) -> AcmeConfig
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 AcmeConfig
impl RefUnwindSafe for AcmeConfig
impl Send for AcmeConfig
impl Sync for AcmeConfig
impl Unpin for AcmeConfig
impl UnsafeUnpin for AcmeConfig
impl UnwindSafe for AcmeConfig
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
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<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> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
map-response-body only.Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.