WIP: Add SSL config

This commit is contained in:
Matt Brubeck 2020-05-17 09:04:58 -07:00
parent f89d2179a9
commit bbd0035eb4
6 changed files with 120 additions and 9 deletions

1
Cargo.lock generated
View file

@ -6,6 +6,7 @@ version = "1.0.0"
dependencies = [
"async-std",
"async-tls",
"rustls",
]
[[package]]

View file

@ -13,6 +13,7 @@ edition = "2018"
[dependencies]
async-tls = "0.7.0"
async-std = "1.5"
rustls = "0.17.0"
[profile.release]
lto = true

View file

@ -1,7 +0,0 @@
use {
std::{
error::Error,
},
};
pub type Result<T=()> = std::result::Result<T, Box<dyn Error>>;

View file

@ -1,5 +1,39 @@
use agate::Result;
use {
async_std::{
net::TcpListener,
prelude::*,
task::block_on,
},
rustls::{
internal::pemfile::{certs, rsa_private_keys},
},
std::{
error::Error,
fs::File,
io::BufReader,
},
};
pub type Result<T=()> = std::result::Result<T, Box<dyn Error>>;
fn main() -> Result {
Ok(())
let certs = certs(&mut BufReader::new(File::open("tests/cert.pem")?))
.expect("Error reading certificate file");
let mut keys = rsa_private_keys(&mut BufReader::new(File::open("tests/key.pem")?))
.expect("Error reading private key file");
let mut config = rustls::ServerConfig::new(rustls::NoClientAuth::new());
config.set_single_cert(certs, keys.remove(0))?;
let addr = "0.0.0.0:1965";
block_on(async {
let listener = TcpListener::bind(addr).await?;
let mut incoming = listener.incoming();
while let Some(stream) = incoming.next().await {
}
Ok(())
})
}

30
tests/cert.pem Normal file
View file

@ -0,0 +1,30 @@
-----BEGIN CERTIFICATE-----
MIIFKjCCAxKgAwIBAgIUE0lnPid9xoVSHKo+93XpJcM0/ckwDQYJKoZIhvcNAQEL
BQAwHDEaMBgGA1UEAwwRZ2VtaW5pLmxpbXBldC5uZXQwHhcNMjAwNTE3MTU0ODQx
WhcNMzAwNTE1MTU0ODQxWjAcMRowGAYDVQQDDBFnZW1pbmkubGltcGV0Lm5ldDCC
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOwdGFm7PlGads7JzTnQgGoT
3f3/LXL9i242BsUpKQk3sihciLBruoSlB8lOjb6X1+Ovlc5uUdAMiQzcg4htiiQa
lmsZmzokTvL4+NDGKXZS/sGimkB0D8LQjQhEA4RD4AnhBbeQ4oJEGn8Q9VOTkVKZ
nVL5rP5ScEEfGMlR1CUSq9iNg3r2ZhI138/aNrgDytcUlDXUSZpKeERZOu7fJMLN
LUMS/HFragq1blMZEej2hiAtmwQKPiyvUSjczhg4Ui+pYzJuwBPVq5bR4uCA9jLv
ohjJpS31SGErDhIVivnRBlEFSftdDgjrjmP0IQUFAFUZilfTqtLWEXJyXrHa8+Kf
7g51eU0pYeyDm4O4WdSm6joQXqPStpQ03chFcK6fN+2UgHvDgy8O8H1aAtDBxsXF
G2mRtoDglkOaeecC/okDHtwKGbxkEP5ebhivytK51KEIF4Yhf+rTVe66MgHLTvi6
2BW5JymAclWMnpOQTQOfp/PFYe8S6FSCxeBAqgxvQjgUrIBFCcRlVyubxCWapd+0
P0CgAR9dl9ZcWW0RCQK/vSGpQT7sqFFCMnhZabZY8PIUsu3z0O3N/9nLQe/RXqH0
EvRCJUq545kYYuaSUqfa00fnkbVbFGWByVni+hprIrRj6YEH5GrALjKQaF4t9k/z
ZhNwGVzIEhy9Y0Xo2VLtAgMBAAGjZDBiMB0GA1UdDgQWBBTIZa+CJsEYahN/wRd5
mcY7HzlLfDAfBgNVHSMEGDAWgBTIZa+CJsEYahN/wRd5mcY7HzlLfDAPBgNVHRMB
Af8EBTADAQH/MA8GA1UdEQQIMAaHBH8AAAEwDQYJKoZIhvcNAQELBQADggIBAG40
/1s0QGmsIrT2HRcNVm7/Py8b1lIka3uQYY/ZW9xQQTwFtXvdXYfkafm7hLPbNqmQ
HGmNLIFGrgZjKW7F/28fG5V6wGSawx5LBPpT1oPS6p2tFKKFKV9c8MP7J/g2Q0q5
LTes1PPTa1fqkqZwpMGAAOaTtmX+DJfjxbJZ0/T0vP5NjbeqVSnKil40QBRWcPPT
0qoJaYUkowMUu2LvhpkpIW/P8A68oM3z7/gmwP/YALIVXXIkdevUbEdqlwkjaOkF
DQZYlmNhiTnaJnOu16LaVrCkC/vAtaHVCYsKftjYH+/BfcdFqFffnWrn+j6/NFfy
NRvSEbzSjdH+h/0zT+kLLIih/vovF3WVNGjNk+JlZgVdDvJyuKlMTiAyPq12HOSE
yQ3oHBKvk+iQekCkuDRga9BDgfsvMlIhrH4VZ85AU+yy/HzcBAB4nlFhD3vsopHm
mpEuhMrmdN4FhGAsNJKYE3St6H+1eVuWR2c2KlA2EDSVJU0qaINzhChU79KpTfkb
F3TdRiebTjgUGJylqggp5SN/YyJ30g+DdePPBf9MXbJmWEzI/iKvqlspVNy41chP
Z4/8jXiCavZQ5e+1FeVIWFRNKxPkl9Wlr4UdtItte6jkG7r+Zy0O4DyFkzzNg4Gk
OKpARqWVkqyOVEaMPv/ypZwpeNPhQQupITCu/x/7
-----END CERTIFICATE-----

52
tests/key.pem Normal file
View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
xaJIiFfR55tTOf5rMJA4NmeL8rdrTt8=
-----END PRIVATE KEY-----