Torna agli aggiornamenti
New releaseSep 8, 2026

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.

Condividi

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.

Build Status Coverage Status (codecov.io) Documentation Chat OpenSSF Best Practices

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

https://docs.rs/rustls/

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 crate aws-lc-rs per 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 crate ring per 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:

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.

Categorie