Implica una versione TLS minima nel AWS SDK for Rust - AWS SDK for Rust

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implica una versione TLS minima nel AWS SDK for Rust

AWS SDK for Rust Utilizza TLS per aumentare la sicurezza durante la comunicazione con i servizi. AWS Per impostazione predefinita, l'SDK applica una versione TLS minima 1.2. Per impostazione predefinita, l'SDK negozia anche la versione più alta di TLS disponibile sia per l'applicazione client che per il servizio. Ad esempio, l'SDK potrebbe essere in grado di negoziare TLS 1.3.

Una particolare versione TLS può essere applicata nell'applicazione fornendo la configurazione manuale del connettore TCP utilizzato dall'SDK. Per illustrare ciò, l'esempio seguente mostra come applicare TLS 1.3.

Nota

Alcuni AWS servizi non supportano ancora TLS 1.3, quindi l'applicazione di questa versione potrebbe influire sull'interoperabilità dell'SDK. Consigliamo di testare questa configurazione con ogni servizio prima della distribuzione in produzione.

pub async fn connect_via_tls_13() -> Result<(), Error> { println!("Attempting to connect to KMS using TLS 1.3: "); // Let webpki load the Mozilla root certificates. let mut root_store = RootCertStore::empty(); root_store.add_server_trust_anchors(webpki_roots::TLS_SERVER_ROOTS.0.iter().map(|ta| { rustls::OwnedTrustAnchor::from_subject_spki_name_constraints( ta.subject, ta.spki, ta.name_constraints, ) })); // The .with_protocol_versions call is where we set TLS1.3. You can add rustls::version::TLS12 or replace them both with rustls::ALL_VERSIONS let config = rustls::ClientConfig::builder() .with_safe_default_cipher_suites() .with_safe_default_kx_groups() .with_protocol_versions(&[&rustls::version::TLS13]) .expect("It looks like your system doesn't support TLS1.3") .with_root_certificates(root_store) .with_no_client_auth(); // Finish setup of the rustls connector. let rustls_connector = hyper_rustls::HttpsConnectorBuilder::new() .with_tls_config(config) .https_only() .enable_http1() .enable_http2() .build(); // See https://github.com/awslabs/smithy-rs/discussions/3022 for the HyperClientBuilder let http_client = HyperClientBuilder::new().build(rustls_connector); let shared_conf = aws_config::defaults(BehaviorVersion::latest()) .http_client(http_client) .load() .await; let kms_client = aws_sdk_kms::Client::new(&shared_conf); let response = kms_client.list_keys().send().await?; println!("{:?}", response); Ok(()) }