在 nginx 配置文件中,您可以像这样配置 SSL 密码列表
ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
这个密码串的语法是什么?也就是说,我知道(或者认为我知道,如果我错了,请纠正我)这个字符串旨在提供可能的 SSL 密码列表,并为它们提供优先级。文档不太擅长的是解释这个字符串的格式。
具体问题
是
!
否定的吗?也就是说,是否!DSS
意味着不使用DSS?还是!DSS
和密码一样?:
字符是分隔符吗?那就是密码列表“HIGH,!aNULL,!eNULL等......”的上方,或者:
意味着其他什么是否
HIGH
与LOW
密码相同,或者它们是某种特殊的元指令上图中没有,但我见过这样的字符串
AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:
。字符是-
密码名称的一部分,还是有特殊含义?
是否有资源可以解释这个字符串是如何工作的,或者在这种情况下,期望使用该字符串的人也应该阅读 nginx 源代码以了解它是如何工作的?
此语法来自 OpenSSL。请参阅密码列表格式。
再往下,它列出了不同的密码,这些元密码像
HIGH
摘抄:
Nginx
ssl_ciphers
指令使用OpenSSL 密码列表格式。此密码列表被描述为一个或多个密码字符串,通常由冒号或逗号分隔(OpenSSL 也支持空格,但您必须使用 nginx 将列表括在引号中)。
密码字符串是特定密码套件或分组在关键字下的密码套件。
默认情况下,OpenSSL 带有一个在库编译时确定的默认密码列表,并且出于明显的安全目的,它不包括未经加密或身份验证的密码套件。它应该
ALL:!aNULL:!eNULL
与 OpenSSL 1.0 一样。例如,密码字符串
HIGH
表示所有密码套件都使用大于 128 位的密钥提供加密,而密码字符串LOW
与使用 56 或 64 位密钥的密码套件匹配。此外,AES256-GCM-SHA384
和ECDHE-RSA-RC4-SHA
是特定的密码套件。符号
!
表示当服务器在握手阶段与客户端交换支持的密码套件时删除密码套件组或特定密码套件。例如!eNULL
,and!aNULL
意味着删除不提供加密和身份验证的密码套件。