Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Imponga una versión mínima de TLS en el AWS SDK para Rust
AWS SDK para RustUtiliza TLS para aumentar la seguridad al comunicarse con AWS los servicios. De forma predeterminada, el SDK exige como mínimo la versión 1.2 de TLS. De forma predeterminada, el SDK también negocia la versión superior de TLS disponible tanto para la aplicación cliente como para el servicio. Por ejemplo, el SDK podría negociar TLS 1.3.
Se puede imponer una versión de TLS concreta en la aplicación mediante la configuración manual del conector TCP que utiliza el SDK. Para ilustrarlo, en el siguiente ejemplo se explica cómo imponer TLS 1.3.
nota
Algunos AWS servicios aún no son compatibles con TLS 1.3, por lo que la aplicación de esta versión podría afectar a la interoperabilidad del SDK. Recomendamos probar esta configuración con cada servicio antes de la implementación en producción.
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(()) }