在一个nginxconfiguration文件中,你可以像这样configuration一个SSL密码列表
ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
这个密码string的语法是什么? 也就是说,我知道(或者认为我知道,纠正我,如果我错了),这个string是为了提供一个可能的SSL密码列表,并为他们提供一个优先级。 文档不太好解释这个string的格式。
具体的问题
是!
否定? 也就是说, !DSS
意味着不使用DSS吗? 或者是!DSS
与密码相同?
是:
字符分隔符? 那就是高于一列密码“HIGH,!aNULL,!eNULL等等”,或者是:
意思是别的
高和LOW
与密码相同,或者是某种特殊的元指令
没有上图,但我已经看到这样的stringAES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:
密码名称是-
字符的一部分吗?还是它们有特殊的含义?
有没有解释这个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-SHA384
和ECDHE-RSA-RC4-SHA
是特定的密码套件。
符号!
意味着在握手阶段服务器与客户端交换支持的密码套件时,删除密码套件组或特定的密码套件。 例如!eNULL
和!aNULL
表示删除不提供encryption和authentication的密码套件。