66
77use std:: {
88 convert:: Infallible ,
9- io:: BufReader ,
109 net:: { Ipv4Addr , TcpListener } ,
1110 sync:: Arc ,
1211 time:: Duration ,
@@ -15,7 +14,11 @@ use std::{
1514use anyhow:: Context ;
1615use hyper:: { Request , Response } ;
1716use mas_listener:: { ConnectionInfo , server:: Server } ;
18- use tokio_rustls:: rustls:: { RootCertStore , ServerConfig , server:: WebPkiClientVerifier } ;
17+ use tokio_rustls:: rustls:: {
18+ RootCertStore , ServerConfig ,
19+ pki_types:: { CertificateDer , PrivateKeyDer , PrivatePkcs1KeyDer , pem:: PemObject } ,
20+ server:: WebPkiClientVerifier ,
21+ } ;
1922use tokio_util:: sync:: CancellationToken ;
2023use tower:: service_fn;
2124
@@ -77,31 +80,26 @@ async fn main() -> Result<(), anyhow::Error> {
7780}
7881
7982fn load_tls_config ( ) -> Result < Arc < ServerConfig > , anyhow:: Error > {
80- let mut ca_cert_reader = BufReader :: new ( CA_CERT_PEM ) ;
81- let ca_cert = rustls_pemfile:: certs ( & mut ca_cert_reader)
83+ let ca_cert = CertificateDer :: pem_slice_iter ( CA_CERT_PEM )
8284 . collect :: < Result < Vec < _ > , _ > > ( )
8385 . context ( "Invalid CA certificate" ) ?;
8486 let mut ca_cert_store = RootCertStore :: empty ( ) ;
8587 ca_cert_store. add_parsable_certificates ( ca_cert) ;
8688
87- let mut server_cert_reader = BufReader :: new ( SERVER_CERT_PEM ) ;
88- let server_cert: Vec < _ > = rustls_pemfile:: certs ( & mut server_cert_reader)
89+ let server_cert: Vec < _ > = CertificateDer :: pem_slice_iter ( SERVER_CERT_PEM )
8990 . collect :: < Result < Vec < _ > , _ > > ( )
9091 . context ( "Invalid server certificate" ) ?;
9192
92- let mut server_key_reader = BufReader :: new ( SERVER_KEY_PEM ) ;
93- let server_key = rustls_pemfile:: rsa_private_keys ( & mut server_key_reader)
94- . next ( )
95- . context ( "No RSA private key found" ) ?
96- . context ( "Invalid server TLS keys" ) ?;
93+ let server_key =
94+ PrivatePkcs1KeyDer :: from_pem_slice ( SERVER_KEY_PEM ) . context ( "Invalid server TLS keys" ) ?;
9795
9896 let client_cert_verifier = WebPkiClientVerifier :: builder ( Arc :: new ( ca_cert_store) )
9997 . allow_unauthenticated ( )
10098 . build ( ) ?;
10199
102100 let mut config = ServerConfig :: builder ( )
103101 . with_client_cert_verifier ( client_cert_verifier)
104- . with_single_cert ( server_cert, server_key . into ( ) ) ?;
102+ . with_single_cert ( server_cert, PrivateKeyDer :: Pkcs1 ( server_key ) ) ?;
105103 config. alpn_protocols = vec ! [ b"h2" . to_vec( ) , b"http/1.1" . to_vec( ) ] ;
106104
107105 Ok ( Arc :: new ( config) )
0 commit comments