Rust 锈迹(或BriTransmisth/ring)AES CBC选项不插入\u空\u碎片

Rust 锈迹(或BriTransmisth/ring)AES CBC选项不插入\u空\u碎片,rust,Rust,我正在使用rustls库()进行TLS连接。一切都很好,除了一些服务器不建立连接(在HelloClient消息后失败),因为它们不支持CBC模式的空片段(OpenSSL中的选项名为SSL_OP_DONT_INSERT_empty_fragments,更多详细信息见此处)。 我知道rustls也使用了ring库(),但我在那里也找不到类似的选项 我试图研究一下rustls和ring代码,但没有找到类似的选项 我希望在没有空片段的情况下与不支持tls的服务器建立tls连接。例如,Windows 7默

我正在使用rustls库()进行TLS连接。一切都很好,除了一些服务器不建立连接(在HelloClient消息后失败),因为它们不支持CBC模式的空片段(OpenSSL中的选项名为SSL_OP_DONT_INSERT_empty_fragments,更多详细信息见此处)。 我知道rustls也使用了ring库(),但我在那里也找不到类似的选项

我试图研究一下rustls和ring代码,但没有找到类似的选项

我希望在没有空片段的情况下与不支持tls的服务器建立tls连接。例如,Windows 7默认使用tls 1.0(或1.1)


感谢您的帮助。

Rustls不支持CBC密码套件或TLS 1.0或1.1。在TLS中使用CBC(MAC然后加密)的方式被认为是不安全的(尤其是当与您想要的选项一起使用时),而Rustls不会实现不安全的算法。Rustls支持TLS 1.2和1.3,并且仅支持AEAD算法(AES-GCM和ChaCha20-Poly1305)

如果您想使用Rustls编写服务器,则需要确保您的客户端至少支持tls1.2并使用安全密码套件。如果您关心您的数据安全或有任何类型的法规遵从性要求,您无论如何都应该这样做

值得注意的是,Windows7将在一月份下线,因此它的TLS支持在那之后不应该成为一个问题