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 Rust Utiliza TLS para aumentar la seguridad al comunicarse con AWS los servicios. El SDK exige una versión TLS mínima de 1.2 de forma predeterminada. De forma predeterminada, el SDK también negocia la versión más alta de TLS disponible tanto para la aplicación cliente como para el servicio. Por ejemplo, es posible que el SDK pueda negociar el TLS 1.3.
Se puede aplicar una versión de TLS concreta en la aplicación proporcionando una configuración manual del conector TCP que utiliza el SDK. Para ilustrarlo, en el siguiente ejemplo se muestra cómo aplicar el 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(()) }