
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.
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.
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
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 crateaws-lc-rspara 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 crateringpara 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:
boring-rustls-provider- um provedor em desenvolvimento que usaboringsslpara criptografia.rustls-ccm- adiciona suítes de cifras AES-CCM (TLS 1.2 e 1.3) usandoRustCrypto, para protocolos de IoT/dispositivos com recursos limitados (IEEE 2030.5, Matter, RFC 7925).rustls-graviola- um provedor que usagraviolapara criptografia.rustls-mbedtls-provider- um provedor que usambedtlspara criptografia.rustls-openssl- um provedor que usa OpenSSL para criptografia.rustls-rustcrypto- um provedor experimental que usa as primitivas criptográficas doRustCryptopara criptografia.rustls-symcrypt- um provedor que usa a biblioteca SymCrypt da Microsoft.rustls-wolfcrypt-provider- um provedor em desenvolvimento que usawolfCryptpara criptografia.
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: