[−][src]Module openssl::ssl 
SSL/TLS support.
SslConnector and SslAcceptor should be used in most cases - they handle
configuration of the OpenSSL primitives for you.
Examples
To connect as a client to a remote server:
use openssl::ssl::{SslMethod, SslConnector}; use std::io::{Read, Write}; use std::net::TcpStream; let connector = SslConnector::builder(SslMethod::tls()).unwrap().build(); let stream = TcpStream::connect("google.com:443").unwrap(); let mut stream = connector.connect("google.com", stream).unwrap(); stream.write_all(b"GET / HTTP/1.0\r\n\r\n").unwrap(); let mut res = vec![]; stream.read_to_end(&mut res).unwrap(); println!("{}", String::from_utf8_lossy(&res));
To accept connections as a server from remote clients:
use openssl::ssl::{SslMethod, SslAcceptor, SslStream, SslFiletype}; use std::net::{TcpListener, TcpStream}; use std::sync::Arc; use std::thread; let mut acceptor = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap(); acceptor.set_private_key_file("key.pem", SslFiletype::PEM).unwrap(); acceptor.set_certificate_chain_file("certs.pem").unwrap(); acceptor.check_private_key().unwrap(); let acceptor = Arc::new(acceptor.build()); let listener = TcpListener::bind("0.0.0.0:8443").unwrap(); fn handle_client(stream: SslStream<TcpStream>) { // ... } for stream in listener.incoming() { match stream { Ok(stream) => { let acceptor = acceptor.clone(); thread::spawn(move || { let stream = acceptor.accept(stream).unwrap(); handle_client(stream); }); } Err(e) => { /* connection failed */ } } }
Structs
| CipherBits | Information about the state of a cipher. | 
| ConnectConfiguration | A type which allows for configuration of a client-side TLS session before connection. | 
| Error | An SSL error. | 
| ErrorCode | An error code returned from SSL functions. | 
| MidHandshakeSslStream | An SSL stream midway through the handshake process. | 
| NameType | An identifier of a session name type. | 
| ShutdownState | The shutdown state of a session. | 
| SniError | An error returned from the SNI callback. | 
| Ssl | The state of an SSL/TLS session. | 
| SslAcceptor | A type which wraps server-side streams in a TLS session. | 
| SslAcceptorBuilder | A builder for  | 
| SslAlert | An SSL/TLS alert. | 
| SslCipher | Information about a cipher. | 
| SslCipherRef | Reference to an  | 
| SslConnector | A type which wraps client-side streams in a TLS session. | 
| SslConnectorBuilder | A builder for  | 
| SslContext | A context object for TLS streams. | 
| SslContextBuilder | A builder for  | 
| SslContextRef | Reference to  | 
| SslFiletype | An identifier of the format of a certificate or key file. | 
| SslMethod | A type specifying the kind of protocol an  | 
| SslMode | Options controlling the behavior of an  | 
| SslOptions | Options controlling the behavior of an  | 
| SslRef | Reference to an  | 
| SslSession | An encoded SSL session. | 
| SslSessionCacheMode | Options controlling the behavior of session caching. | 
| SslSessionRef | Reference to  | 
| SslStream | A TLS session over a stream. | 
| SslStreamBuilder | A partially constructed  | 
| SslVerifyMode | Options controling the behavior of certificate verification. | 
| SslVersion | An SSL/TLS protocol version. | 
| StatusType | An identifier of a certificate status type. | 
Enums
| HandshakeError | An error or intermediate state after a TLS handshake attempt. | 
| ShutdownResult | The result of a shutdown request. | 
Functions
| SSL_CTX_up_ref⚠ | |
| SSL_SESSION_get_master_key⚠ | |
| SSL_SESSION_up_ref⚠ | |
| SSL_is_server⚠ | |
| select_next_proto | A standard implementation of protocol selection for Application Layer Protocol Negotiation (ALPN). |