Crate hyper_openssl [−] [src]
Hyper SSL support via modern versions of OpenSSL.
Hyper's built in OpenSSL support depends on version 0.7 of openssl
. This crate provides
SSL support using version 0.9 of openssl
.
Usage
Hyper's ssl
feature is enabled by default, so it must be explicitly turned off in your
Cargo.toml:
[dependencies]
hyper = { version = "0.9", default_features = false }
hyper-openssl = "0.1"
Then on the client side:
extern crate hyper; extern crate hyper_openssl; use hyper::Client; use hyper::net::HttpsConnector; use hyper_openssl::OpensslClient; use std::io::Read; fn main() { let ssl = OpensslClient::new().unwrap(); let connector = HttpsConnector::new(ssl); let client = Client::with_connector(connector); let mut resp = client.get("https://google.com").send().unwrap(); let mut body = vec![]; resp.read_to_end(&mut body).unwrap(); println!("{}", String::from_utf8_lossy(&body)); }
Or on the server side:
extern crate hyper; extern crate hyper_openssl; extern crate openssl; use hyper::Server; use hyper_openssl::OpensslServer; use openssl::ssl::{SslMethod, SslAcceptorBuilder}; use openssl::pkcs12::Pkcs12; use std::io::Read; use std::fs::File; fn main() { let mut pkcs12 = vec![]; File::open("identity.pfx") .unwrap() .read_to_end(&mut pkcs12) .unwrap(); let pkcs12 = Pkcs12::from_der(&pkcs12) .unwrap() .parse("hunter2") .unwrap(); let acceptor = SslAcceptorBuilder::mozilla_intermediate(SslMethod::tls(), &pkcs12.pkey, &pkcs12.cert, pkcs12.chain) .unwrap() .build(); let ssl = OpensslServer::from(acceptor); let server = Server::https("0.0.0.0:8443", ssl).unwrap(); }
Structs
OpensslClient |
An |
OpensslServer |
An |
SslStream |
A Hyper SSL stream. |