密码string语法在nginx中

在一个nginxconfiguration文件中,你可以像这样configuration一个SSL密码列表

ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS; 

这个密码string的语法是什么? 也就是说,我知道(或者认为我知道,纠正我,如果我错了),这个string是为了提供一个可能的SSL密码列表,并为他们提供一个优先级。 文档不太好解释这个string的格式。

具体的问题

有没有解释这个string是如何工作的资源,或者这是一个人们希望使用这个string的情况,也需要读取nginx源文件来弄清楚它是如何工作的?

这个语法来自OpenSSL。 请参阅CIPHER LIST FORMAT 。

再往下看,列出了不同的密码和像HIGH这样的meta密码

摘抄:

密码列表由一个或多个由冒号分隔的密码string组成。 逗号或空格也是可以接受的分隔符,但通常使用冒号。

实际的密码string可以采取几种不同的forms。

它可以由单个密码套件组成,例如RC4-SHA。

它可以表示包含特定algorithm的密码套件列表,或者某种types的密码套件。 例如,SHA1表示使用摘要algorithmSHA1的所有密码套件,SSLv3表示所有SSL v3algorithm。

密码套件列表可以使用+字符组合在一个密码string中。 这被用作逻辑和操作。 例如SHA1 + DES表示所有包含SHA1和DESalgorithm的密码套件。

每个密码string可以select前面的字符!, – 或+。

如果! 被使用,那么密码永久从列表中删除。 删除的密码永远不会重新出现在列表中,即使它们被明确声明。

如果使用 – 则从列表中删除密码,但可以通过稍后的选项再次添加一些或所有密码。

如果使用+,那么密码被移动到列表的末尾。 这个选项不会添加任何刚刚移动的与现有密码匹配的新密码。

Nginx的ssl_ciphers指令使用的是OpenSSL的密码列表格式 。

这个密码列表被描述为一个或多个通常用冒号或逗号分隔的 密码string (OpenSSL也支持空格,但是你必须用nginx将这个列表换成引号)。

密码string是在关键字下分组的特定密码套件或密码套件

默认情况下,OpenSSL带有一个默认密码列表,这个默认密码列表是在库编译时确定的,并且为了明显的安全目的,排除了没有encryption或authentication的密码套件。 它应该是ALL:!aNULL:!eNULL和OpenSSL 1.0一样。

例如,密码stringHIGH表示所有提供大于128位的密钥的encryption套件,而密码stringLOW与使用56或64位密钥的密码套件相匹配。 另外, AES256-GCM-SHA384ECDHE-RSA-RC4-SHA是特定的密码套件。

符号! 意味着在握手阶段服务器与客户端交换支持的密码套件时,删除密码套件组或特定的密码套件。 例如!eNULL!aNULL表示删除不提供encryption和authentication的密码套件。