aboutsummaryrefslogtreecommitdiffstats
path: root/src/config.rs
diff options
context:
space:
mode:
authorjikstra <jikstra@disroot.org>2021-12-27 23:28:27 +0000
committerjikstra <jikstra@disroot.org>2021-12-28 02:21:50 +0000
commit00598acb2197b8f86dd03c0d79e016882b6a96cd (patch)
tree75150f5f3fa342a8dbfe7de55fcbed8999dcf27c /src/config.rs
parentBump actix-web to v4.0-beta.9 (diff)
downloadminiserve-00598acb2197b8f86dd03c0d79e016882b6a96cd.tar.gz
miniserve-00598acb2197b8f86dd03c0d79e016882b6a96cd.zip
Bump actix-web to v4.0-beta.15
Co-authored-by: Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com>
Diffstat (limited to 'src/config.rs')
-rw-r--r--src/config.rs29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/config.rs b/src/config.rs
index fda2f84..9bb6928 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -11,7 +11,7 @@ use anyhow::{Context, Result};
use http::HeaderMap;
#[cfg(feature = "tls")]
-use rustls::internal::pemfile::{certs, pkcs8_private_keys};
+use rustls_pemfile::{certs, pkcs8_private_keys};
use crate::{args::CliArgs, auth::RequiredAuth};
@@ -156,7 +156,6 @@ impl MiniserveConfig {
let tls_rustls_server_config = if let (Some(tls_cert), Some(tls_key)) =
(args.tls_cert, args.tls_key)
{
- let mut server_config = rustls::ServerConfig::new(rustls::NoClientAuth::new());
let cert_file = &mut BufReader::new(
File::open(&tls_cert)
.context(format!("Couldn't access TLS certificate {:?}", tls_cert))?,
@@ -164,10 +163,32 @@ impl MiniserveConfig {
let key_file = &mut BufReader::new(
File::open(&tls_key).context(format!("Couldn't access TLS key {:?}", tls_key))?,
);
- let cert_chain = certs(cert_file).map_err(|_| anyhow!("Couldn't load certificates"))?;
+ let cert_chain = match rustls_pemfile::read_one(cert_file) {
+ Ok(item) => match item {
+ Some(item) => match item {
+ rustls_pemfile::Item::X509Certificate(item) => item,
+ _ => return Err(anyhow!("Certfile is not a X509Certificate")),
+ },
+ None => {
+ return Err(anyhow!(
+ "Certfile does not contain any recognized certificates"
+ ))
+ }
+ },
+ _ => return Err(anyhow!("Could not read certfile")),
+ };
let mut keys =
pkcs8_private_keys(key_file).map_err(|_| anyhow!("Couldn't load private key"))?;
- server_config.set_single_cert(cert_chain, keys.remove(0))?;
+ let server_config = rustls::ServerConfig::builder()
+ .with_safe_default_cipher_suites()
+ .with_safe_default_kx_groups()
+ .with_safe_default_protocol_versions()
+ .unwrap()
+ .with_no_client_auth()
+ .with_single_cert(
+ vec![rustls::Certificate(cert_chain)],
+ rustls::PrivateKey(keys.remove(0)),
+ )?;
Some(server_config)
} else {
None