Struct axum_server::tls_rustls::RustlsConfig
source · [−]pub struct RustlsConfig { /* private fields */ }tls-rustls only.Expand description
Rustls configuration.
Implementations
sourceimpl RustlsConfig
impl RustlsConfig
sourcepub fn from_config(config: Arc<ServerConfig>) -> Self
pub fn from_config(config: Arc<ServerConfig>) -> Self
Create config from Arc<ServerConfig>.
sourcepub async fn from_der(cert: Vec<Vec<u8>>, key: Vec<u8>) -> Result<Self>
pub async fn from_der(cert: Vec<Vec<u8>>, key: Vec<u8>) -> Result<Self>
Create config from DER-encoded data.
The certificate must be DER-encoded X.509.
The private key must be DER-encoded ASN.1 in either PKCS#8 or PKCS#1 format.
sourcepub async fn from_pem(cert: Vec<u8>, key: Vec<u8>) -> Result<Self>
pub async fn from_pem(cert: Vec<u8>, key: Vec<u8>) -> Result<Self>
Create config from PEM formatted data.
Certificate and private key must be in PEM format.
sourcepub async fn from_pem_file(
cert: impl AsRef<Path>,
key: impl AsRef<Path>
) -> Result<Self>
pub async fn from_pem_file(
cert: impl AsRef<Path>,
key: impl AsRef<Path>
) -> Result<Self>
Create config from PEM formatted files.
Contents of certificate file and private key file must be in PEM format.
Examples found in repository?
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind_rustls(addr, config)
.serve(app.into_make_service())
.await
.unwrap();
}More examples
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn https_server() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3443));
println!("https listening on {}", addr);
axum_server::bind_rustls(addr, config)
.serve(app.into_make_service())
.await
.unwrap();
}17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
async fn main() {
let app = Router::new().route("/", get(handler));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
let acceptor = CustomAcceptor::new(RustlsAcceptor::new(config));
let server = axum_server::bind(addr).acceptor(acceptor);
server.serve(app.into_make_service()).await.unwrap();
}11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
let listener = TcpListener::bind(addr).unwrap();
println!("listening on {}", addr);
axum_server::from_tcp_rustls(listener, config)
.serve(app.into_make_service())
.await
.unwrap();
}15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
// Spawn a task to reload tls.
tokio::spawn(reload(config.clone()));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind_rustls(addr, config)
.serve(app.into_make_service())
.await
.unwrap();
}sourcepub fn get_inner(&self) -> Arc<ServerConfig>
pub fn get_inner(&self) -> Arc<ServerConfig>
Get inner Arc<ServerConfig>.
sourcepub fn reload_from_config(&self, config: Arc<ServerConfig>)
pub fn reload_from_config(&self, config: Arc<ServerConfig>)
Reload config from Arc<ServerConfig>.
sourcepub async fn reload_from_der(
&self,
cert: Vec<Vec<u8>>,
key: Vec<u8>
) -> Result<()>
pub async fn reload_from_der(
&self,
cert: Vec<Vec<u8>>,
key: Vec<u8>
) -> Result<()>
Reload config from DER-encoded data.
The certificate must be DER-encoded X.509.
The private key must be DER-encoded ASN.1 in either PKCS#8 or PKCS#1 format.
sourcepub async fn reload_from_pem(&self, cert: Vec<u8>, key: Vec<u8>) -> Result<()>
pub async fn reload_from_pem(&self, cert: Vec<u8>, key: Vec<u8>) -> Result<()>
Reload config from PEM formatted data.
Certificate and private key must be in PEM format.
sourcepub async fn reload_from_pem_file(
&self,
cert: impl AsRef<Path>,
key: impl AsRef<Path>
) -> Result<()>
pub async fn reload_from_pem_file(
&self,
cert: impl AsRef<Path>,
key: impl AsRef<Path>
) -> Result<()>
Reload config from PEM formatted files.
Contents of certificate file and private key file must be in PEM format.
Examples found in repository?
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn reload(config: RustlsConfig) {
// Wait for 20 seconds.
sleep(Duration::from_secs(20)).await;
println!("reloading rustls configuration");
// Reload rustls configuration from new files.
config
.reload_from_pem_file(
"examples/self-signed-certs/reload/cert.pem",
"examples/self-signed-certs/reload/key.pem",
)
.await
.unwrap();
println!("rustls configuration reloaded");
}Trait Implementations
sourceimpl Clone for RustlsConfig
impl Clone for RustlsConfig
sourcefn clone(&self) -> RustlsConfig
fn clone(&self) -> RustlsConfig
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
Auto Trait Implementations
impl !RefUnwindSafe for RustlsConfig
impl Send for RustlsConfig
impl Sync for RustlsConfig
impl Unpin for RustlsConfig
impl !UnwindSafe for RustlsConfig
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more