Voltar às atualizações
New releaseSep 8, 2026

rustls v/0.23.44

Biblioteca TLS memory-safe em Rust que implementa TLS 1.2 e 1.3 com provedores de criptografia plugáveis, modos cliente/servidor e autenticação baseada em certificados.

Compartilhar

Rustls é uma biblioteca TLS moderna escrita em Rust.

Status

Rustls é usado em produção em muitas organizações e projetos. Nosso objetivo é manter uma estabilidade razoável da superfície da API, mas a API pode evoluir à medida que fazemos alterações para acomodar novos recursos ou melhorias de desempenho.

Temos um roadmap para nossos planos futuros. Também temos benchmarks para evitar regressões de desempenho e permitir que você avalie o rustls no seu hardware de destino.

Se você quiser ajudar, consulte CONTRIBUTING.md.

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

Os mantenedores pronunciam "rustls" como "rustles" (em vez de rust-TLS), mas não temos uma opinião forte sobre isso.

Changelog

A lista detalhada de alterações em cada versão pode ser encontrada em https://github.com/rustls/rustls/releases.

Documentação

https://docs.rs/rustls/

Abordagem

Rustls é uma biblioteca TLS que visa fornecer um bom nível de segurança criptográfica, não exige configuração para alcançar essa segurança e não oferece recursos inseguros nem criptografia obsoleta por padrão.

Rustls implementa TLS1.2 e TLS1.3 para clientes e servidores. Consulte a lista completa de recursos do protocolo.

Suporte a plataformas

Embora o Rustls em si seja independente de plataforma, ele requer o uso de primitivas criptográficas para implementar os algoritmos de criptografia usados no TLS. No Rustls, um crypto::CryptoProvider representa um conjunto de implementações de primitivas criptográficas.

Ao fornecer uma instância personalizada da struct crypto::CryptoProvider, você pode substituir todas as dependências de criptografia do rustls. Esse é um caminho para ser portátil para um conjunto mais amplo de arquiteturas e ambientes, ou para requisitos de conformidade. Consulte a documentação de crypto::CryptoProvider para mais detalhes.

Provedores de criptografia

Desde o Rustls 0.22, é possível escolher o provedor das primitivas criptográficas que o Rustls utiliza. Isso pode ser atraente se você tiver requisitos específicos de plataforma, conformidade ou recursos.

A partir da versão 0.24, os usuários devem fornecer explicitamente um provedor de criptografia ao construir instâncias de ClientConfig ou ServerConfig. Consulte a documentação de crypto::CryptoProvider para mais detalhes.

Provedores de primeira parte

O projeto Rustls atualmente mantém dois provedores de criptografia:

  • rustls-aws-lc-rs - um provedor que usa o crate aws-lc-rs para criptografia. Embora esse provedor possa ser mais difícil de compilar em algumas plataformas, ele oferece excelente desempenho e um conjunto completo de recursos (incluindo algoritmos pós-quânticos).
  • rustls-ring - um provedor que usa o crate ring para criptografia. Este provedor é mais fácil de compilar em várias plataformas, mas tem um conjunto de recursos mais limitado (por exemplo, não suporta algoritmos pós-quânticos).

A equipe do Rustls recomenda o uso do crate rustls-aws-lc-rs pelo seu conjunto completo de recursos e desempenho. Consulte o FAQ do aws-lc-rs para mais detalhes sobre as restrições de suporte de plataforma/arquitetura do aws-lc-rs.

Consulte a documentação de crypto::CryptoProvider para detalhes sobre como os provedores são selecionados.

(Para versões do rustls anteriores à 0.24, ambos os provedores eram distribuídos como parte do crate rustls, e os recursos do Cargo eram usados para selecionar o provedor preferido. O recurso aws-lc-rs era habilitado por padrão.)

Provedores de terceiros

A comunidade também começou a desenvolver provedores de terceiros para o Rustls:

Consulte a seção Making a custom CryptoProvider da documentação para obter mais informações sobre este tópico.

Código de exemplo

Nosso diretório de examples contém demonstrações que mostram como lidar com E/S usando o auxiliar stream::Stream, bem como E/S assíncrona mais complexa usando mio. Se você já usa Tokio como runtime assíncrono, talvez prefira usar tokio-rustls em vez de interagir diretamente com o rustls.

Os exemplos baseados em mio são os mais completos e são discutidos abaixo. Usuários novos no Rustls podem preferir ver os exemplos simples de cliente/servidor antes de mergulhar nos exemplos mais complexos de MIO.

Programa de exemplo de cliente

O programa de exemplo de cliente MIO chama-se tlsclient-mio.

Algumas execuções de exemplo:

$ cargo run --bin tlsclient-mio -- --http jbp.io
HTTP/1.1 200 OK
Date: Tue, 23 Jun 2026 16:13:40 GMT
Content-Type: text/html; charset=utf-8
Connection: close
(...)

Execute cargo run --bin tlsclient-mio -- --help para mais opções.

Programa de exemplo de servidor

O programa de exemplo de servidor MIO chama-se tlsserver-mio.

Aqui está uma execução de exemplo; iniciamos um servidor TLS de eco e então nos conectamos a ele com openssl e tlsclient-mio:

$ cargo run --bin tlsserver-mio -- --certs test-ca/rsa-2048/end.fullchain --key test-ca/rsa-2048/end.key -p 8443 echo &
$ echo hello world | openssl s_client -ign_eof -quiet -connect localhost:8443
depth=2 CN = ponytown RSA CA
verify error:num=19:self signed certificate in certificate chain
hello world
^C
$ echo hello world | cargo run --bin tlsclient-mio -- --cafile test-ca/rsa-2048/ca.cert --port 8443 localhost
hello world
^C

Execute cargo run --bin tlsserver-mio -- --help para mais opções.

Licença

Rustls é distribuído sob as seguintes três licenças:

  • Licença Apache versão 2.0.
  • Licença MIT.
  • Licença ISC.

Elas estão incluídas como LICENSE-APACHE, LICENSE-MIT e LICENSE-ISC, respectivamente. Você pode usar este software sob os termos de qualquer uma dessas licenças, à sua escolha.

Membros do projeto

  • Joe Birr-Pixton (@ctz, Fundador do Projeto - financiado em tempo integral pelo Prossimo)
  • Dirkjan Ochtman (@djc, Co-mantenedor)
  • Daniel McCarney (@cpu, Co-mantenedor)
  • Josh Aas (@bdaehlie, Gestão do Projeto)

Código de conduta

Este projeto adota o Código de Conduta do Rust. Envie um e-mail para [email protected] para relatar qualquer caso de má conduta, ou se tiver comentários ou perguntas sobre o Código de Conduta.

Categorias