Skip to content

Commit bdbcee0

Browse files
committed
Set correct CA lifetime
1 parent b3c17b3 commit bdbcee0

File tree

6 files changed

+11
-7
lines changed

6 files changed

+11
-7
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/stackable-certs/src/ca/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub enum Error {
3838
#[snafu(display("failed to generate RSA signing key"))]
3939
GenerateRsaSigningKey { source: rsa::Error },
4040

41-
#[snafu(display("failed to generate ECDSA signign key"))]
41+
#[snafu(display("failed to generate ECDSA signing key"))]
4242
GenerateEcdsaSigningKey { source: ecdsa::Error },
4343

4444
#[snafu(display("failed to parse {subject:?} as subject"))]

crates/stackable-certs/src/lib.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use std::ops::Deref;
2323

2424
use snafu::Snafu;
25-
use stackable_operator::time::Duration;
2625
use x509_cert::{Certificate, spki::EncodePublicKey};
2726
#[cfg(feature = "rustls")]
2827
use {
@@ -37,9 +36,6 @@ use crate::keys::CertificateKeypair;
3736
pub mod ca;
3837
pub mod keys;
3938

40-
/// The default certificate validity time span
41-
pub const DEFAULT_CERTIFICATE_VALIDITY: Duration = Duration::from_hours_unchecked(1);
42-
4339
/// Error variants which can be encountered when creating a new
4440
/// [`CertificatePair`].
4541
#[derive(Debug, Snafu)]

crates/stackable-webhook/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ hyper.workspace = true
1919
k8s-openapi.workspace = true
2020
kube.workspace = true
2121
opentelemetry.workspace = true
22+
rand.workspace = true
2223
serde_json.workspace = true
2324
snafu.workspace = true
2425
tokio-rustls.workspace = true

crates/stackable-webhook/src/tls/cert_resolver.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use tokio_rustls::rustls::{
99
};
1010
use x509_cert::Certificate;
1111

12-
use super::WEBHOOK_CERTIFICATE_LIFETIME;
12+
use super::{WEBHOOK_CA_LIFETIME, WEBHOOK_CERTIFICATE_LIFETIME};
1313

1414
type Result<T, E = CertificateResolverError> = std::result::Result<T, E>;
1515

@@ -18,6 +18,9 @@ pub enum CertificateResolverError {
1818
#[snafu(display("failed send certificate to channel"))]
1919
SendCertificateToChannel,
2020

21+
#[snafu(display("failed to generate ECDSA signing key"))]
22+
GenerateEcdsaSigningKey { source: ecdsa::Error },
23+
2124
#[snafu(display("failed to generate new certificate"))]
2225
GenerateNewCertificate {
2326
#[snafu(source(from(CertificateResolverError, Box::new)))]
@@ -106,8 +109,10 @@ impl CertificateResolver {
106109
tokio::task::spawn_blocking(move || {
107110
let tls_provider = default_provider();
108111

112+
let ca_key = ecdsa::SigningKey::new().context(GenerateEcdsaSigningKeySnafu)?;
109113
let mut ca =
110-
CertificateAuthority::new_ecdsa().context(CreateCertificateAuthoritySnafu)?;
114+
CertificateAuthority::new_with(ca_key, rand::random::<u64>(), WEBHOOK_CA_LIFETIME)
115+
.context(CreateCertificateAuthoritySnafu)?;
111116

112117
let certificate = ca
113118
.generate_ecdsa_leaf_certificate(

crates/stackable-webhook/src/tls/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use x509_cert::Certificate;
2626

2727
mod cert_resolver;
2828

29+
pub const WEBHOOK_CA_LIFETIME: Duration = Duration::from_minutes_unchecked(3);
2930
pub const WEBHOOK_CERTIFICATE_LIFETIME: Duration = Duration::from_minutes_unchecked(2);
3031
pub const WEBHOOK_CERTIFICATE_ROTATION_INTERVAL: Duration = Duration::from_minutes_unchecked(1);
3132

0 commit comments

Comments
 (0)