Skip to content

Commit 9164fa8

Browse files
committed
feat: add TLS support to owner-onboarding-server
This commit adds TLS support to owner-onboarding-server. It also adds a new module ov_management that handles enpoints for ov management api. Signed-off-by: Rupanshi Jain <rupanshijain45678@gmail.com>
1 parent 4721f5b commit 9164fa8

5 files changed

Lines changed: 438 additions & 23 deletions

File tree

http-wrapper/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ aws-nitro-enclaves-cose = "0.4.0"
2424

2525
# Server-side
2626
uuid = { version = "1.3", features = ["v4"], optional = true }
27-
warp = { version = "0.3", optional = true }
27+
warp = { version = "0.3", optional = true, default-features = false }
2828
warp-sessions = { version = "1.0", optional = true }
2929
time = "0.3"
3030

owner-onboarding-server/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ tokio = { version = "1", features = ["full"] }
1313
thiserror= "1"
1414
serde = "1"
1515
openssl = "0.10.55"
16-
warp = "0.3"
16+
warp = { version = "0.3", default-features = false, features = ["tls"]}
17+
hyper = { version = "0.14", features = ["tcp"] }
18+
tls-listener = { version = "0.7.0", features = ["openssl", "hyper-h1"]}
1719
serde_bytes = "0.11"
1820
serde_cbor = "0.11"
21+
serde_json = "1.0.79"
1922
log = "0.4"
2023
serde_yaml = "0.9"
2124
time = "0.3"

owner-onboarding-server/src/main.rs

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::convert::{TryFrom, TryInto};
22
use std::fs;
3+
use std::net::SocketAddr;
34
use std::sync::Arc;
45

56
use anyhow::{bail, Context, Result};
@@ -32,8 +33,15 @@ use fdo_util::servers::{
3233
configuration::{owner_onboarding_server::OwnerOnboardingServerSettings, AbsolutePathBuf},
3334
settings_for, OwnershipVoucherStoreMetadataKey,
3435
};
36+
use hyper::server::conn::AddrIncoming;
37+
use std::convert::Infallible;
38+
use tls_listener::TlsListener;
39+
40+
pub mod tls_config;
3541

3642
mod handlers;
43+
mod ov_management;
44+
use crate::ov_management::ov_filter;
3745

3846
pub(crate) struct OwnerServiceUD {
3947
// Trusted keys
@@ -278,6 +286,7 @@ async fn main() -> Result<()> {
278286

279287
// Bind information
280288
let bind_addr = settings.bind.clone();
289+
let addr = SocketAddr::from(([0, 0, 0, 0], 8081));
281290

282291
// Trusted keys
283292
let trusted_device_keys = {
@@ -423,32 +432,48 @@ async fn main() -> Result<()> {
423432
.or(handler_to2_prove_device)
424433
.or(handler_to2_device_service_info_ready)
425434
.or(handler_to2_device_service_info)
426-
.or(handler_to2_done),
435+
.or(handler_to2_done)
436+
.or(ov_filter(user_data.clone())),
427437
)
428438
.recover(fdo_http_wrapper::server::handle_rejection)
429439
.with(warp::log("owner-onboarding-service"));
430440

431-
log::info!("Listening on {}", bind_addr);
432-
let server = warp::serve(routes);
433-
434-
let maintenance_runner =
435-
tokio::spawn(async move { perform_maintenance(user_data.clone()).await });
436-
437-
let server = server
438-
.bind_with_graceful_shutdown(bind_addr, async {
439-
signal(SignalKind::terminate()).unwrap().recv().await;
440-
log::info!("Terminating");
441-
})
442-
.1;
443-
let server = tokio::spawn(server);
444-
445-
tokio::select!(
446-
_ = server => {
447-
log::info!("Server terminated");
448-
},
449-
_ = maintenance_runner => {
450-
log::info!("Maintenance runner terminated");
441+
log::info!("Listening on {}", addr);
442+
443+
let service = warp::service(routes);
444+
445+
let make_svc = hyper::service::make_service_fn(move |_| {
446+
let svc = service.clone();
447+
async move { Ok::<_, Infallible>(svc) }
451448
});
452449

450+
let incoming = TlsListener::new(
451+
tls_config::tls_config::tls_acceptor(),
452+
AddrIncoming::bind(&addr)?,
453+
);
454+
let server = hyper::Server::builder(incoming).serve(make_svc);
455+
log::info!("starting at https://{}", addr);
456+
server.await?;
457+
// let server = warp::serve(routes);
458+
459+
// let maintenance_runner =
460+
// tokio::spawn(async move { perform_maintenance(user_data.clone()).await });
461+
462+
// let server = server
463+
// .bind_with_graceful_shutdown(bind_addr, async {
464+
// signal(SignalKind::terminate()).unwrap().recv().await;
465+
// log::info!("Terminating");
466+
// })
467+
// .1;
468+
// let server = tokio::spawn(server);
469+
470+
// tokio::select!(
471+
// _ = server => {
472+
// log::info!("Server terminated");
473+
// },
474+
// _ = maintenance_runner => {
475+
// log::info!("Maintenance runner terminated");
476+
// });
477+
453478
Ok(())
454479
}

0 commit comments

Comments
 (0)