MCPcopy Create free account
hub / github.com/actix/examples / main

Function main

https-tls/rustls-client-cert/src/main.rs:75–120  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

73
74#[actix_web::main]
75async fn main() -> std::io::Result<()> {
76 env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
77
78 rustls::crypto::aws_lc_rs::default_provider()
79 .install_default()
80 .unwrap();
81
82 let mut cert_store = RootCertStore::empty();
83
84 // import CA cert
85 CertificateDer::pem_file_iter(CA_CERT)
86 .unwrap()
87 .flatten()
88 .for_each(|der| cert_store.add(der).unwrap());
89
90 // set up client authentication requirements
91 let client_auth = WebPkiClientVerifier::builder(Arc::new(cert_store))
92 .build()
93 .unwrap();
94
95 // import server cert and key
96 let key_der = PrivateKeyDer::from_pem_file(SERVER_KEY).unwrap();
97 let cert_chain = CertificateDer::pem_file_iter(SERVER_CERT)
98 .unwrap()
99 .flatten()
100 .collect();
101
102 let config = ServerConfig::builder()
103 .with_client_cert_verifier(client_auth)
104 .with_single_cert(cert_chain, key_der)
105 .unwrap();
106
107 log::info!("Starting HTTP server at http://localhost:8080 and https://localhost:8443");
108
109 HttpServer::new(|| {
110 App::new()
111 .default_service(web::to(route_whoami))
112 .wrap(Logger::default())
113 })
114 .on_connect(get_client_cert)
115 .bind(("localhost", 8080))?
116 .bind_rustls_0_23(("localhost", 8443), config)?
117 .workers(2)
118 .run()
119 .await
120}

Callers

nothing calls this directly

Calls 1

runMethod · 0.80

Tested by

no test coverage detected