lighty 的生活

lighty 开发者博客

GnuTLS 优先级字符串

目录

工作原理

优先级字符串是一个由冒号分隔的组件列表。
每个组件必须以+为前缀表示添加,或以-!为前缀表示从配置中移除(或从其所代表的集合中移除)。级别只能设置(无前缀)或添加(带+)。标志只能设置(所有标志都有%前缀)。NONE只能作为第一个组件指定(无前缀),它表示一个空配置。否则,它将以一个不包含任何密码、密钥交换算法和哈希算法的标准配置开始。

密码、密钥交换算法和哈希算法的顺序对密码套件的顺序很重要;为了生成列表,它首先遍历密钥交换算法,然后是密码,最后是哈希算法。新项目总是添加到列表的末尾,因此例如-SHA1:+SHA1会将SHA1移动到哈希算法列表的末尾。

-ALL集合并不总是代表完整列表,但至少应包含NORMAL级别中存在的子集。

版本特定说明

  • 在 GnuTLS 3.2.2 之前,移除算法不会保留顺序;相反,被移除的算法会被列表中的最后一个算法替换。
  • GnuTLS 3.2.2 中保留顺序的修复引入了另一个错误:NONE:+MAC-ALL:-SHA1:+SHA1 缺少 SHA1MD5 出现了两次。
  • 此外,在目前测试的版本(≤ 3.2.2)中,添加-ALL集合会移除列表中的所有其他算法;如果-ALL集合实际包含所有算法,这只会覆盖顺序,但NONE:+COMP-DEFLATE:+COMP-ALL只包含COMP-NULL而不是COMP-DEFLATE。我目前认为这是一个错误,因此本页面不反映此行为。
    级别无法移除,但添加级别实际上会追加所包含的算法;NONE:+MD5:+NORMAL 实际上将 MD5 作为第一个哈希算法。
  • GnuTLS 3.2.5 添加了许多新的密码套件(许多已支持算法的新组合,以及用于新的CAMELLIA-128-GCM + CAMELLIA-256-GCM密码的套件)
  • (尚未发布):Camellia-GCM 密码已被添加到某些级别,在默认集合中,GCM 密码获得了更高的优先级(高于可比的 CBC 密码)。这些更改已在下方生效。

要实际检查您的 GnuTLS 库正在做什么,您可以运行gnutls-cli -l --priority="NORMAL",或下载并编译gnutls-priority.c(它可以显示更多内部状态)。

测试优先级字符串

优先级字符串

优先级配置

优先级套件