GnuTLS 优先级字符串
目录
工作原理
优先级字符串是一个由冒号分隔的组件列表。
每个组件必须以+
为前缀表示添加,或以-
或!
为前缀表示从配置中移除(或从其所代表的集合中移除)。级别只能设置(无前缀)或添加(带+
)。标志只能设置(所有标志都有%
前缀)。NONE
只能作为第一个组件指定(无前缀),它表示一个空配置。否则,它将以一个不包含任何密码、密钥交换算法和哈希算法的标准配置开始。
密码、密钥交换算法和哈希算法的顺序对密码套件的顺序很重要;为了生成列表,它首先遍历密钥交换算法,然后是密码,最后是哈希算法。新项目总是添加到列表的末尾,因此例如-SHA1:+SHA1
会将SHA1
移动到哈希算法列表的末尾。
-ALL
集合并不总是代表完整列表,但至少应包含NORMAL
级别中存在的子集。
版本特定说明
- 在 GnuTLS 3.2.2 之前,移除算法不会保留顺序;相反,被移除的算法会被列表中的最后一个算法替换。
- GnuTLS 3.2.2 中保留顺序的修复引入了另一个错误:
NONE:+MAC-ALL:-SHA1:+SHA1
缺少SHA1
且MD5
出现了两次。 - 此外,在目前测试的版本(≤ 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(它可以显示更多内部状态)。
测试优先级字符串
优先级字符串