2020-09-12 17:21:54 +02:00
|
|
|
#![allow(dead_code)]
|
|
|
|
|
2018-05-24 05:39:15 +02:00
|
|
|
// <ssl>
|
2020-09-12 17:21:54 +02:00
|
|
|
use actix_web::{get, App, HttpRequest, HttpServer, Responder};
|
2018-05-24 05:39:15 +02:00
|
|
|
use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod};
|
|
|
|
|
2020-09-12 17:21:54 +02:00
|
|
|
#[get("/")]
|
2019-12-28 19:32:56 +01:00
|
|
|
async fn index(_req: HttpRequest) -> impl Responder {
|
2018-05-24 05:39:15 +02:00
|
|
|
"Welcome!"
|
|
|
|
}
|
|
|
|
|
2020-09-12 17:21:54 +02:00
|
|
|
#[actix_web::main]
|
2019-12-28 19:32:56 +01:00
|
|
|
async fn main() -> std::io::Result<()> {
|
2018-05-24 05:39:15 +02:00
|
|
|
// load ssl keys
|
2019-06-18 23:29:54 +02:00
|
|
|
// to create a self-signed temporary cert for testing:
|
|
|
|
// `openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 -subj '/CN=localhost'`
|
2020-11-27 02:10:05 +01:00
|
|
|
let mut builder =
|
|
|
|
SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap();
|
2018-05-24 05:39:15 +02:00
|
|
|
builder
|
|
|
|
.set_private_key_file("key.pem", SslFiletype::PEM)
|
|
|
|
.unwrap();
|
|
|
|
builder.set_certificate_chain_file("cert.pem").unwrap();
|
|
|
|
|
2020-09-12 17:21:54 +02:00
|
|
|
HttpServer::new(|| App::new().service(index))
|
|
|
|
.bind_openssl("127.0.0.1:8080", builder)?
|
2019-06-13 23:10:51 +02:00
|
|
|
.run()
|
2019-12-28 19:32:56 +01:00
|
|
|
.await
|
2018-05-24 05:39:15 +02:00
|
|
|
}
|
|
|
|
// </ssl>
|