Skip to content

Commit deb2d17

Browse files
committed
feat(gateway): support exact SNI certificates
1 parent 54efaa2 commit deb2d17

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

dstack/gateway/src/cert_store.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,22 @@ impl CertStoreBuilder {
265265
Ok(())
266266
}
267267

268+
/// Add an exact-name certificate to the builder.
269+
pub fn add_exact_cert(&mut self, domain: &str, data: &CertData) -> Result<()> {
270+
let now = std::time::SystemTime::now()
271+
.duration_since(std::time::UNIX_EPOCH)
272+
.context("system time is before Unix epoch")?
273+
.as_secs();
274+
anyhow::ensure!(data.not_after > now, "certificate is expired");
275+
276+
let certified_key = parse_certified_key(&data.cert_pem, &data.key_pem)
277+
.with_context(|| format!("failed to parse certificate for {}", domain))?;
278+
self.exact_certs
279+
.insert(domain.to_string(), Arc::new(certified_key));
280+
self.cert_data.insert(domain.to_string(), data.clone());
281+
Ok(())
282+
}
283+
268284
/// Build the immutable CertStore
269285
pub fn build(self) -> CertStore {
270286
CertStore {

0 commit comments

Comments
 (0)