7 个不稳定版本 (3 个破坏性版本)

0.4.1 2024 年 5 月 27 日
0.4.0 2024 年 5 月 26 日
0.3.1 2024 年 5 月 25 日
0.2.0 2024 年 5 月 24 日
0.1.1 2024 年 5 月 24 日

#707 in HTTP 服务器

MPL-2.0 许可证

34KB
683 代码行

ocsp-stapler

crates.io Documentation MPL-2 Licensed

用于 Rustls 的 OCSP stapler。

  • OCSP Client 可以单独使用
  • Stapler 包装 Arc<dyn ResolvesServerCert> 特征对象并自动将提供的所有证书固定

请参阅文档获取更多详细信息。

示例

// Read the chain & private key and combine them into CertifiedKey
let certs = std::fs::read("chain.pem").unwrap();
let certs = rustls_pemfile::certs(&mut certs.as_ref()).collect::<Result<Vec<_>, _>>().unwrap();

let key = std::fs::read("private.pem").unwrap();
let key = rustls_pemfile::private_key(&mut key.as_ref()).unwrap();
let key = rustls::crypto::aws_lc_rs::sign::any_supported_type(&key).unwrap();

let ckey = rustls::sign::CertifiedKey::new(certs, key);

// Inner service that provides certificates to Rustls, can be anything
let mut inner = rustls::server::ResolvesServerCertUsingSni::new();
inner.add("crates.io", ckey).unwrap();

// Create a Stapler wrapping inner resolver
let stapler = Arc::new(ocsp_stapler::Stapler::new(inner));

// Then you can build & use ServerConfig wherever applicable
let server_config = rustls::server::ServerConfig::builder()
        .with_no_client_auth()
        .with_cert_resolver(stapler.clone());

// Stop the background worker to clean up resources
stapler.stop().await;

依赖关系

~25–38MB
~724K SLoC