Appliquez une version minimale de TLS dans Kit AWS SDK pour Rust - Kit AWS SDK pour Rust

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Appliquez une version minimale de TLS dans Kit AWS SDK pour Rust

Il Kit AWS SDK pour Rust utilise le protocole TLS pour renforcer la sécurité lors de la communication avec les AWS services. Le SDK applique une version TLS minimale de 1.2 par défaut. Par défaut, le SDK négocie également la version la plus élevée de TLS disponible à la fois pour l'application cliente et pour le service. Par exemple, le SDK peut être en mesure de négocier le protocole TLS 1.3.

Une version TLS particulière peut être appliquée dans l'application en fournissant une configuration manuelle du connecteur TCP utilisé par le SDK. Pour illustrer cela, l'exemple suivant montre comment appliquer le protocole TLS 1.3.

Note

Certains AWS services ne prennent pas encore en charge le protocole TLS 1.3. L'application de cette version peut donc affecter l'interopérabilité du SDK. Nous vous recommandons de tester cette configuration avec chaque service avant le déploiement en production.

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(()) }