ssl_ciphers配置项的可选值由openssl 的ciphers定义
查看openssl支持的加密套件
openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]
-v:详细列出所有加密套件。包括ssl版本(SSLv2、SSLv3以及 TLS)、密钥交换算法、身份验证算法、对称算法、摘要算法以及该算法是否可以出口。
-ssl2:只列出SSLv2使用的加密套件。
-ssl3:只列出SSLv3使用的加密套件。
-tls1:只列出tls使用的加密套件。
cipherlist:列出一个cipher list的详细内容。用此项能列出所有符合规则的加密套件,如果不加-v选项,它只显示各个套件名字;
算法列表格式:
算法列表包含一个或多个冒号隔开的
真实的算法字符串可以从不同的表中提取。
也可以包含一个简单的算法组件,例如AES256-RSA256。
一个算法组件包含某几个算法,或者算法套件的几个类型值。例如B
一个算法组件可以用B<+>字符把简单的算法字符连接起来。这是一个符合逻辑的B
可以在每个算法字符串之前使用字符B、B<->或 B<+>。
如果使用字符B,则从算法列表中删除该算法。根据明确的规定,删除了的算法将不会再出现。
如果使用字符B<->,则从算法列表中删除该算法。但是可以通过后面的选项将一个或所有的算法可以被再次添加。
如果使用字符B<+>,则将该算法移到算法列表的末尾。这个选项不会添加任何新的算法,它只是紧紧的移动匹配的已经存在的算法。
如果没有上述字符被提出,则该字符串则作为一个算法列表中的一部分则仅仅被解释。如果这个列表包含的算法已经被提出,则他们将被忽略:因为他们不会被移到列表的末尾。
此外,算法字符串B<@STRENGTH>可以被用于到分类,可以让符合条件的算法按加密算法的长度分类(输出时会聚合在一起)。
算法字符串:
下面是经过许可的所有算法字符串以及他们的详细解释:
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B<3DES>:算法套件使用3des算法。
B
B
B
B
B
B
B
B
B
B
B
B
B
比如列出所有默认的算法列表
pc@ubuntu:~$ openssl ciphers -v
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
。。。。。。
Kx 密钥交换算法 :用来协商回话密钥
Au 验证算法 :用来验证服务端身份
Enc对称加密算法:加密消息
Mac摘要算法:防消息篡改
nginx 默认配置是 HIGH:!aNULL:!MD5
今天发现在指定加密套件后服务器报
使用wires hark 发现
浏览器支持的加密套件 nginx并没有配置 所以握手失败