我正在使用rustls库(https://github.com/ctz/rustls)进行TLS连接。一切正常,除了一些服务器不建立连接(在HelloClient消息后失败),因为它们不支持CBC模式的空片段(OpenSSL的选项名称为SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS,更多详细信息,请点击https://www.openssl.org/~bodo/tls-cbc.txt)。我知道rustls也使用ring库(https://github.com/briansmith/ring),但我也无法在其中找到类似的选项。
我试图研究rustls和铃声代码,但没有找到类似的选择。
我希望与不支持它的服务器建立不带空片段的tls连接。例如。 Windows 7默认使用tls 1.0(或1.1)。
谢谢您的帮助。
Rustls不支持CBC密码套件或TLS 1.0或1.1。 TLS中使用CBC的方式(MAC-then-Encrypt)被认为是不安全的(尤其是与所需的选项一起使用时),Rustls也不实现不安全的算法。 Rustls支持TLS 1.2和1.3,并且仅支持AEAD算法(AES-GCM和ChaCha20-Poly1305)。
[如果要使用Rustls编写服务器,则需要确保客户端至少支持TLS 1.2并使用安全密码套件。如果您关心数据安全或有任何合规性要求,则无论如何都应该这样做。
请注意,Windows 7将于1月停产,因此之后不应该考虑其TLS支持。