Skip to content

Commit 669e868

Browse files
Use tokio-rustls 0.23 (#396)
Co-authored-by: Rob Ede <[email protected]>
1 parent 47f278b commit 669e868

File tree

5 files changed

+24
-15
lines changed

5 files changed

+24
-15
lines changed

actix-tls/CHANGES.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
# Changes
22

33
## Unreleased - 2021-xx-xx
4+
* Update `tokio-rustls` to `0.23` which uses `rustls` `0.20`. [#396]
5+
* Removed a re-export of `Session` from `rustls` as it no longer exist. [#396]
46
* Minimum supported Rust version (MSRV) is now 1.52.
57

8+
[#396]: https://github.com/actix/actix-net/pull/396
9+
610

711
## 3.0.0-beta.5 - 2021-03-29
8-
* Changed `connect::ssl::rustls::RustlsConnectorService` to return error when `DNSNameRef`
12+
* Changed `connect::ssl::rustls::RustlsConnectorService` to return error when `DNSNameRef`
913
generation failed instead of panic. [#296]
1014
* Remove `connect::ssl::openssl::OpensslConnectServiceFactory`. [#297]
1115
* Remove `connect::ssl::openssl::OpensslConnectService`. [#297]
1216
* Add `connect::ssl::native_tls` module for native tls support. [#295]
1317
* Rename `accept::{nativetls => native_tls}`. [#295]
14-
* Remove `connect::TcpConnectService` type. service caller expect a `TcpStream` should use
18+
* Remove `connect::TcpConnectService` type. service caller expect a `TcpStream` should use
1519
`connect::ConnectService` instead and call `Connection<T, TcpStream>::into_parts`. [#299]
1620

1721
[#295]: https://github.com/actix/actix-net/pull/295

actix-tls/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ tls-openssl = { package = "openssl", version = "0.10.9", optional = true }
5454
tokio-openssl = { version = "0.6", optional = true }
5555

5656
# rustls
57-
tokio-rustls = { version = "0.22", optional = true }
57+
tokio-rustls = { version = "0.23", optional = true }
5858
webpki-roots = { version = "0.21", optional = true }
5959

6060
# native-tls
@@ -67,6 +67,7 @@ bytes = "1"
6767
env_logger = "0.8"
6868
futures-util = { version = "0.3.7", default-features = false, features = ["sink"] }
6969
log = "0.4"
70+
rustls-pemfile = "0.2.1"
7071
trust-dns-resolver = "0.20.0"
7172

7273
[[example]]

actix-tls/examples/tcp-rustls.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,29 @@ use actix_service::ServiceFactoryExt as _;
3535
use actix_tls::accept::rustls::{Acceptor as RustlsAcceptor, TlsStream};
3636
use futures_util::future::ok;
3737
use log::info;
38-
use rustls::{
39-
internal::pemfile::certs, internal::pemfile::rsa_private_keys, NoClientAuth, ServerConfig,
40-
};
38+
use rustls::{server::ServerConfig, Certificate, PrivateKey};
39+
use rustls_pemfile::{certs, rsa_private_keys};
4140

4241
#[actix_rt::main]
4342
async fn main() -> io::Result<()> {
4443
env::set_var("RUST_LOG", "info");
4544
env_logger::init();
4645

47-
let mut tls_config = ServerConfig::new(NoClientAuth::new());
48-
4946
// Load TLS key and cert files
5047
let cert_file = &mut BufReader::new(File::open("./examples/cert.pem").unwrap());
5148
let key_file = &mut BufReader::new(File::open("./examples/key.pem").unwrap());
5249

53-
let cert_chain = certs(cert_file).unwrap();
50+
let cert_chain = certs(cert_file)
51+
.unwrap()
52+
.into_iter()
53+
.map(Certificate)
54+
.collect();
5455
let mut keys = rsa_private_keys(key_file).unwrap();
55-
tls_config
56-
.set_single_cert(cert_chain, keys.remove(0))
56+
57+
let tls_config = ServerConfig::builder()
58+
.with_safe_defaults()
59+
.with_no_client_auth()
60+
.with_single_cert(cert_chain, PrivateKey(keys.remove(0)))
5761
.unwrap();
5862

5963
let tls_acceptor = RustlsAcceptor::new(tls_config);

actix-tls/src/accept/rustls.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use actix_utils::counter::{Counter, CounterGuard};
1414
use futures_core::future::LocalBoxFuture;
1515
use tokio_rustls::{Accept, TlsAcceptor};
1616

17-
pub use tokio_rustls::rustls::{ServerConfig, Session};
17+
pub use tokio_rustls::rustls::ServerConfig;
1818

1919
use super::MAX_CONN_COUNTER;
2020

actix-tls/src/connect/ssl/rustls.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
use std::{
2+
convert::TryFrom,
23
future::Future,
34
io,
45
pin::Pin,
56
sync::Arc,
67
task::{Context, Poll},
78
};
89

9-
pub use tokio_rustls::rustls::Session;
1010
pub use tokio_rustls::{client::TlsStream, rustls::ClientConfig};
1111
pub use webpki_roots::TLS_SERVER_ROOTS;
1212

1313
use actix_rt::net::ActixStream;
1414
use actix_service::{Service, ServiceFactory};
1515
use futures_core::{future::LocalBoxFuture, ready};
1616
use log::trace;
17-
use tokio_rustls::webpki::DNSNameRef;
17+
use tokio_rustls::rustls::client::ServerName;
1818
use tokio_rustls::{Connect, TlsConnector};
1919

2020
use crate::connect::{Address, Connection};
@@ -89,7 +89,7 @@ where
8989
trace!("SSL Handshake start for: {:?}", connection.host());
9090
let (stream, connection) = connection.replace_io(());
9191

92-
match DNSNameRef::try_from_ascii_str(connection.host()) {
92+
match ServerName::try_from(connection.host()) {
9393
Ok(host) => RustlsConnectorServiceFuture::Future {
9494
connect: TlsConnector::from(self.connector.clone()).connect(host, stream),
9595
connection: Some(connection),

0 commit comments

Comments
 (0)