pub struct SslReport {
pub domain: String,
pub chain: Vec<CertDetail>,
pub protocol_version: Option<String>,
pub san_names: Vec<String>,
pub is_valid: bool,
pub hostname_verified: bool,
pub days_until_expiry: i64,
pub caa: Option<CaaPolicy>,
}Expand description
Full SSL certificate report for a domain.
Fields§
§domain: StringThe domain that was inspected
chain: Vec<CertDetail>Certificate chain from leaf to root (as many as the server provides)
protocol_version: Option<String>TLS protocol version (best-effort detection)
san_names: Vec<String>Subject Alternative Names from the leaf certificate
is_valid: boolWhether the leaf certificate is within its validity period.
This reflects ONLY the date-range check (notBefore <= now <= notAfter) of the leaf certificate. It does NOT verify the certificate
chain’s trust (this checker uses danger_accept_invalid_certs(true) to
inspect broken/self-signed certs) nor that the certificate matches the
requested hostname — see SslReport::hostname_verified. A
date-valid cert may still be self-signed, issued by an untrusted CA, or
presented for the wrong host.
hostname_verified: boolWhether the leaf certificate’s SAN dNSNames (or CN as a legacy fallback) match the requested domain, per RFC 6125 (exact and single-label wildcard matches).
This is an additive signal independent of is_valid. Chain trust is
NOT verified here: a true value means the cert was presented for the
right host, not that it was issued by a trusted CA.
days_until_expiry: i64Days until the leaf certificate expires
caa: Option<CaaPolicy>CAA (Certification Authority Authorization) policy for the domain plus a comparison against the presented certificate’s issuer.
CAA is consulted by CAs at issuance time, not by clients at
validation time, so a mismatch here is informational — see the
note field on CaaPolicy.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for SslReport
impl<'de> Deserialize<'de> for SslReport
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SslReport
impl RefUnwindSafe for SslReport
impl Send for SslReport
impl Sync for SslReport
impl Unpin for SslReport
impl UnsafeUnpin for SslReport
impl UnwindSafe for SslReport
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 more