Erzwingen Sie eine TLS-Mindestversion in der AWS SDK for Rust - AWS SDK for Rust

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erzwingen Sie eine TLS-Mindestversion in der AWS SDK for Rust

The AWS SDK for Rust verwendet TLS, um die Sicherheit bei der Kommunikation mit AWS Diensten zu erhöhen. Das SDK erzwingt standardmäßig eine TLS-Mindestversion von 1.2. Standardmäßig handelt das SDK auch die höchste TLS-Version aus, die sowohl für die Client-Anwendung als auch für den Dienst verfügbar ist. Beispielsweise könnte das SDK in der Lage sein, TLS 1.3 auszuhandeln.

Eine bestimmte TLS-Version kann in der Anwendung erzwungen werden, indem der vom SDK verwendete TCP-Connector manuell konfiguriert wird. Um dies zu veranschaulichen, zeigt Ihnen das folgende Beispiel, wie Sie TLS 1.3 erzwingen können.

Anmerkung

Einige AWS Dienste unterstützen TLS 1.3 noch nicht, sodass die Durchsetzung dieser Version die SDK-Interoperabilität beeinträchtigen kann. Wir empfehlen, diese Konfiguration mit jedem Dienst vor der Produktionsbereitstellung zu testen.

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