
rustls v/0.23.44
Libreria TLS memory-safe in Rust che implementa TLS 1.2 e 1.3 con provider crittografici pluggable, modalità client/server e autenticazione basata su certificati.
Rustls è una moderna libreria TLS scritta in Rust.
Stato
Rustls è usato in produzione in molte organizzazioni e progetti. Miriamo a mantenere una ragionevole stabilità della superficie API, ma l'API potrebbe evolversi man mano che apportiamo modifiche per introdurre nuove funzionalità o miglioramenti delle prestazioni.
Abbiamo una roadmap per i nostri piani futuri. Abbiamo anche benchmark per prevenire regressioni delle prestazioni e per permetterti di valutare rustls sul tuo hardware di riferimento.
Se desideri contribuire, consulta CONTRIBUTING.md.
I maintainer pronunciano "rustls" come rustles (piuttosto che rust-TLS), ma non abbiamo una forte opinione al riguardo.
Changelog
L'elenco dettagliato delle modifiche di ogni release è disponibile su https://github.com/rustls/rustls/releases.
Documentazione
Approccio
Rustls è una libreria TLS che mira a fornire un buon livello di sicurezza crittografica, non richiede alcuna configurazione per raggiungere tale sicurezza e non fornisce funzionalità non sicure né crittografia obsoleta per impostazione predefinita.
Rustls implementa TLS1.2 e TLS1.3 sia per i client che per i server. Vedi l'elenco completo delle funzionalità di protocollo.
Supporto di piattaforma
Sebbene Rustls stesso sia indipendente dalla piattaforma, richiede l'uso di primitive crittografiche
per implementare gli algoritmi crittografici utilizzati in TLS. In Rustls, un
crypto::CryptoProvider rappresenta una raccolta di implementazioni di primitive crittografiche.
Fornendo un'istanza personalizzata della struct crypto::CryptoProvider, puoi
sostituire tutte le dipendenze crittografiche di rustls. Questa è una via per essere portabili
su un insieme più ampio di architetture e ambienti, o per soddisfare requisiti di conformità. Vedi la
documentazione di crypto::CryptoProvider per maggiori dettagli.
Provider crittografici
A partire da Rustls 0.22 è stato possibile scegliere il provider delle primitive crittografiche utilizzate da Rustls. Questo può essere interessante se hai requisiti specifici di piattaforma, conformità o funzionalità.
Dalla versione 0.24, gli utenti devono fornire esplicitamente un provider crittografico quando costruiscono istanze di ClientConfig o
ServerConfig. Vedi la documentazione di crypto::CryptoProvider per maggiori dettagli.
Provider di prima parte
Il progetto Rustls mantiene attualmente due provider crittografici:
rustls-aws-lc-rs- un provider che utilizza la crateaws-lc-rsper la crittografia. Sebbene questo provider possa essere più difficile da compilare su alcune piattaforme, offre prestazioni eccellenti e un set completo di funzionalità (inclusi gli algoritmi post-quantistici).rustls-ring- un provider che utilizza la crateringper la crittografia. Questo provider è più facile da compilare su diverse piattaforme, ma ha un set di funzionalità più limitato (ad esempio, non supporta gli algoritmi post-quantistici).
Il team di Rustls consiglia di utilizzare la crate rustls-aws-lc-rs per il suo set completo di funzionalità
e le sue prestazioni. Vedi le FAQ di aws-lc-rs per maggiori dettagli sui
vincoli di supporto piattaforma/architettura in aws-lc-rs.
Vedi la documentazione di crypto::CryptoProvider per i dettagli su come vengono selezionati i provider.
(Per le versioni di rustls precedenti alla 0.24, entrambi questi provider erano distribuiti come parte della crate rustls,
e le feature di Cargo venivano utilizzate per selezionare il provider preferito. La feature aws-lc-rs
era abilitata per impostazione predefinita.)
Provider di terze parti
Anche la community ha iniziato a sviluppare provider di terze parti per Rustls:
boring-rustls-provider- un provider in lavorazione che utilizzaboringsslper la crittografia.rustls-ccm- aggiunge suite di cifratura AES-CCM (TLS 1.2 e 1.3) utilizzandoRustCrypto, per protocolli IoT/dispositivi con risorse limitate (IEEE 2030.5, Matter, RFC 7925).rustls-graviola- un provider che utilizzagraviolaper la crittografia.rustls-mbedtls-provider- un provider che utilizzambedtlsper la crittografia.rustls-openssl- un provider che utilizza OpenSSL per la crittografia.rustls-rustcrypto- un provider sperimentale che utilizza le primitive crittografiche daRustCryptoper la crittografia.rustls-symcrypt- un provider che utilizza la libreria SymCrypt di Microsoft.rustls-wolfcrypt-provider- un provider in lavorazione che utilizzawolfCryptper la crittografia.
Vedi la sezione Creare un CryptoProvider personalizzato della documentazione per maggiori informazioni su questo argomento.
Codice di esempio
La nostra directory [esempi] contiene demo che mostrano come gestire l'I/O usando l'helper
[stream::Stream], oltre a un I/O asincrono più complesso usando [mio].
Se stai già usando Tokio come runtime asincrono, potresti preferire usare
[tokio-rustls] invece di interagire direttamente con rustls.
Gli esempi basati su [mio] sono i più completi e vengono discussi di seguito. Gli utenti
che si avvicinano per la prima volta a Rustls potrebbero preferire esaminare i semplici esempi client/server prima
di addentrarsi negli esempi MIO più complessi.