rust - Rustls(或 briansmith/ring)AES CBC 选项 DONT_INSERT_EMPTY_FRAGMENTS 类似物
问题描述
我正在使用 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 也使用环库(https://github.com/briansmith/ring),但我也找不到类似的选项。
我试图研究 rustls 和 ring 代码,但没有找到类似的选项。
我希望与不支持它的服务器建立没有空片段的 tls 连接。例如,Window 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 月 EOL,因此此后它的 TLS 支持不应该成为问题。
推荐阅读
- python - Python求和并组织csv数据
- angular - 无法使用 Angular (ng new) Angular CLI v7.0.6 创建新的应用程序/项目
- asp.net-mvc - MVC.Grid 过滤器 - 日期窗口/日历
- cassandra - 当节点有 NTP 同步问题时,Cassandra 删除的行返回(重新出现)
- jakarta-ee - 连接数据库时出现 JDBC 问题
- python - 我正在尝试在 Python 中模拟电力,但电力似乎总是排斥
- python - 扁平化 python 元组 - django 字段选项 optgroups
- python - Python - 如果文本中包含“完整”单词,则打印出来,否则不要
- webpack - Webpack - 复制某些文件并保留它们各自的原始路径
- c - 仅读取和打印正数组索引