Crate hyper_rustls
source ·Expand description
hyper-rustls
A pure-Rust HTTPS connector for hyper, based on Rustls.
Example client
use hyper::{Body, Client, StatusCode, Uri};
let mut rt = tokio::runtime::Runtime::new().unwrap();
let url = ("https://hyper.rs").parse().unwrap();
let https = hyper_rustls::HttpsConnectorBuilder::new()
.with_native_roots()
.https_only()
.enable_http1()
.build();
let client: Client<_, hyper::Body> = Client::builder().build(https);
let res = rt.block_on(client.get(url)).unwrap();
assert_eq!(res.status(), StatusCode::OK);
Example server
use hyper::server::conn::AddrIncoming;
use hyper::service::{make_service_fn, service_fn};
use hyper::{Body, Method, Request, Response, Server, StatusCode};
use hyper_rustls::TlsAcceptor;
use std::io;
use std::fs::File;
let mut rt = tokio::runtime::Runtime::new().unwrap();
let addr = "127.0.0.1:1337".parse().unwrap();
// Load public certificate.
let certfile = File::open("examples/sample.pem").unwrap();
let mut reader = io::BufReader::new(certfile);
// Load and return certificate.
let certs = rustls_pemfile::certs(&mut reader).unwrap();
let certs = certs.into_iter().map(rustls::Certificate).collect();
// Load private key. (see `examples/server.rs`)
let keyfile = File::open("examples/sample.rsa").unwrap();
let mut reader = io::BufReader::new(keyfile);
// Load and return a single private key.
let keys = rustls_pemfile::rsa_private_keys(&mut reader).unwrap();
let key = rustls::PrivateKey(keys[0].clone());
let https = hyper_rustls::HttpsConnectorBuilder::new()
.with_native_roots()
.https_only()
.enable_http1()
.build();
let incoming = AddrIncoming::bind(&addr).unwrap();
let acceptor = TlsAcceptor::builder()
.with_single_cert(certs, key).unwrap()
.with_all_versions_alpn()
.with_incoming(incoming);
let service = make_service_fn(|_| async { Ok::<_, io::Error>(service_fn(|_req|async {Ok::<_, io::Error>(Response::new(Body::empty()))})) });
let server = Server::builder(acceptor).serve(service);
// server.await.unwrap();
Re-exports
pub use crate::acceptor::AcceptorBuilder;
pub use crate::acceptor::TlsAcceptor;
Modules
- TLS acceptor implementing hyper’s
Accept
trait. - The various states of the
HttpsConnectorBuilder
Structs
- A Connector for the
https
scheme. - A builder for an
HttpsConnector
Enums
- A stream that might be protected with TLS.
Traits
- Methods for configuring roots