openssl密码套件详解

说起加密套件(CipherSuite)这个词可能会比较陌生,但是说起ssl/tls可能就是一个众所周知的词汇了,我们知道ssl/tls是经常被用在http协议上以使http协议升级为安全的https协议,ssl协议呢也有自己的握手协商的过程,而这个握手协商的过程呢。就会使用到很多的加密算法,MAC算法,认证算法等等,而加密套件呢就可以理解为是这一些列密码算法的打包形式,其实密码算法的实现有很多,但是目前最主流的实现还是openssl,该文是以openssl来讲解的,有兴趣的可以了解一下其他的实现。

先说用法

如果你是新接触一个知识点的话,一上来就将一堆的细节是无法接受的,所以我们由浅入深,先说用法

查看openssl提供的加密套件

使用如下命令可以查看openssl提供的加密套件:

 $ openssl ciphers -V | column -t
0xC0,0x30  -  ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2  Kx=ECDH        Au=RSA    Enc=AESGCM(256)    Mac=AEAD
0xC0,0x2C  -  ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2  Kx=ECDH        Au=ECDSA  Enc=AESGCM(256)    Mac=AEAD
0xC0,0x28  -  ECDHE-RSA-AES256-SHA384        TLSv1.2  Kx=ECDH        Au=RSA    Enc=AES(256)       Mac=SHA384
0xC0,0x24  -  ECDHE-ECDSA-AES256-SHA384      TLSv1.2  Kx=ECDH        Au=ECDSA  Enc=AES(256)       Mac=SHA384
0xC0,0x14  -  ECDHE-RSA-AES256-SHA           SSLv3    Kx=ECDH        Au=RSA    Enc=AES(256)       Mac=SHA1
0xC0,0x0A  -  ECDHE-ECDSA-AES256-SHA         SSLv3    Kx=ECDH        Au=ECDSA  Enc=AES(256)       Mac=SHA1
0x00,0xA5  -  DH-DSS-AES256-GCM-SHA384       TLSv1.2  Kx=DH/DSS      Au=DH     Enc=AESGCM(256)    Mac=AEAD
0x00,0xA3  -  DHE-DSS-AES256-GCM-SHA384      TLSv1.2  Kx=DH          Au=DSS    Enc=AESGCM(256)    Mac=AEAD
0x00,0xA1  -  DH-RSA-AES256-GCM-SHA384       TLSv1.2  Kx=DH/RSA      Au=DH     Enc=AESGCM(256)    Mac=AEAD
0x00,0x9F  -  DHE-RSA-AES256-GCM-SHA384      TLSv1.2  Kx=DH          Au=RSA    Enc=AESGCM(256)    Mac=AEAD
0x00,0x6B  -  DHE-RSA-AES256-SHA256          TLSv1.2  Kx=DH          Au=RSA    Enc=AES(256)       Mac=SHA256
0x00,0x6A  -  DHE-DSS-AES256-SHA256          TLSv1.2  Kx=DH          Au=DSS    Enc=AES(256)       Mac=SHA256
...

上面我截取了一部分,如果你没有在你的openssl命令中找到你想要的加密套件,那可能是版本的原因openssl会丢弃一些已经过时的加密算法。
cipher命令是openssl的一个子命令,该命令可以将你指定的密码列表(cipherlist)列举成表格,或者是也可以用来测试你指定的密码列表(chiperlist) , 这句话可能不太好理解,不着急,下面会做解释

输出结果说明:

  • 第一列(0xC0,0x30):这是一个两字节的id值,每一个加密套件都有一个id值
  • 第二列(ECDHE-RSA-AES256-GCM-SHA384):这是加密套件的名称
  • 第三列(TLSv1.2):该加密套件对应的ssl/tls版本
  • 第四列(Kx):key exchange 密钥交换算法
  • 第五列(Au):authentication服务器认证算法
  • 第六列(Enc):对称加密算法
  • 第七列(Mac):消息认证算法(摘要算法)

从上面输出结果我们也知道了,原来加密套件打包了四个密码算法,是的。

那么密码列表是什么呢?我们通过例子来解释:

$ openssl ciphers -V 'SHA1:SHA256'
0xC0,0x14 - ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
0xC0,0x0A - ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
0x00,0x39 - DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
0x00,0x38 - DHE-DSS-AES256-SHA      SSLv3 Kx=DH       Au=DSS  Enc=AES(256)  Mac=SHA1
0x00,0x37 - DH-RSA-AES256-SHA       SSLv3 Kx=DH/RSA   Au=DH   Enc=AES(256)  Mac=SHA1
0x00,0x36 - DH-DSS-AES256-SHA       SSLv3 Kx=DH/DSS   Au=DH   Enc=AES(256)  Mac=SHA1
...

我们在命令后面指定了’SHA1:SHA256’,而这个就是一个密码列表 ,关于这里的内容,我们下面解释

密码列表格式

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

密码字符串是有多种不同的格式的。它可以是单个加密套件,比如:RC4-SHA
它也可以表示包含某种算法的加密套件列表,或者一个确切类型的加密套件。例如SHA1表示使用摘要算法SHA1的所有加密套件, SSLv3表示所有的SSL v3 算法。

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

每个密码字符串的前面可以有!,-或+ 字符

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

如果使用 -,则该密码将从列表中删除,但是部分或全部密码可以通过以后的选项再次添加。

如果使用+,则密码被移动到列表的末尾。这个选项不添加任何新的密码,它只是移动匹配现有的密码。

如果这些字符都不存在,则字符串将被解释为要添加到当前首选项列表的密码列表。如果列表中包含任何已经存在的密码,它们将被忽略:也就是说,它们不会移动到列表的末尾。

密码字符串

下面是所有允许的密码字符串及其含义的列表。

DEFAULT

默认的密码列表。它是在编译时确定的且通常为:ALL:!COMPLEMENTOFDEFAULT:!eNULL
使用时,必须指定为第一个密码字符串。

COMPLEMENTOFDEFAULT

Complement of default ,DEFAULT的补充,也就是不包含在DEFAULT中的密码套件。 该密码字符串包含在ALL中,但是默认是不启用的,目前这包括所有的RC4和匿名密码,注意,该规则不包括eNULL,不包括在ALL中(必要时使用COMPLEMENTOFALL )。注意,默认情况下,OpenSSL中没有把基于RC4的加密套件构建进来(请参阅enable-weak-ssl-cipher的Configure选项)

ALL

eNULL密码外的所有密码套件(如果需要,必须显式启用)。
从OpenSSL 1.0.0开始,ALL密码套件在默认情况下是合理排好序的

COMPLEMENTOFALL

未被ALL启用的密码套件,目前为eNULL。

HIGH

"高等"加密技术的密码套件,目前,这表示密钥长度大于128位,还有一些128为密钥的密码套件

MEDIUM

“中等”加密密码套件,目前,其中一些使用128位加密。

LOW

“低等”加密密码套件,目前使用64位或56位加密算法,但不包括导出密码套件。从OpenSSL 1.1.0开始,所有这些加密套件都被删除了。

eNULL, NULL

“NULL”密码是指那些不提供加密的密码,因为它们根本不提供加密,而且存在安全风险,所以不能通过DEFAULT或all密码字符串启用它们,在使用kRSA或aECDSA等低级原语构建密码表时要小心,因为它们与eNULL密码重叠,当你不确定时,在你的密码列表中包含 !eNULL就行。

aNULL

该密码套件不提供身份验证。这是目前的匿名DH算法和匿名ECDH算法,这些密码套件容易受到“中间人”攻击,因此不鼓励使用。这些不包含在DEFAULT密码中,但包含在ALL密码中。在使用较低层原语(如kDHE或AES)构建密码列表时要小心,因为它们确实与aNULL密码重叠,当你不确定时,在你的密码列表中包含 !aNULL就行。

kRSA, aRSA, RSA

使用RSA密钥交换或者认证的密码套件,RSAkRSA的别名

kDHr, kDHd, kDH

使用静态DH密钥协议的密码套件,以及由CA提供商使用RSA和DSS密钥签署的DH证书。所有这些密码套件在OpenSSL 1.1.0中都被删除了。

kDHE, kEDH, DH

使用临时DH密钥协议的密码套件,包括匿名密码套件。

DHE, EDH

使用经过身份验证的临时DH密钥协议的密码套件。

ADH

匿名DH密码套件,注意不包括匿名Elliptic Curve DH (ECDH)密码套件。

kEECDH, kECDHE, ECDH

使用临时ECDH密钥协议的密码套件,包括匿名密码套件。

ECDHE, EECDH

使用经过身份验证的临时ECDH密钥协议的密码套件。

AECDH

匿名Elliptic Curve Diffie-Hellman密码套件

aDSS, DSS

使用DSS身份验证的密码套件,即证书携带DSS密钥。

aDH

密码套件有效地使用了DH认证,即证书携带DH密钥。所有这些密码套件在OpenSSL 1.1.0中都被删除了。

aECDSA, ECDSA

使用ECDSA身份验证的密码套件,即证书携带ECDSA密钥。

TLSv1.2, TLSv1.0, SSLv3

分别列出仅在TLS v1.2、TLS v1.0或SSL v3.0中支持的加密套件。注意:没有特定于TLS v1.1的加密套件。由于这只是最小版本,例如,如果协商TLSv1.0,那么TLSv1.0和SSLv3.0加密套件都是可用的
注意: 这些密码字符串不会改变SSL或TLS的协商版本,它们只影响可用密码套件的列表。

AES128, AES256, AES

密码套件使用128位AES, 256位AES或128/256位AES。

AESGCM

使用Galois Counter Mode (GCM)的AES, 这些加密套件仅在TLS v1.2中支持。

AESCCM, AESCCM8

AES in Cipher Block Chaining - Message Authentication Mode (CCM) : 这些加密套件仅在TLS v1.2中支持。AESCCM引用CCM密码套件使用16和8字节的完整性校验值(ICV),而AESCCM8只引用8字节的ICV。

CAMELLIA128, CAMELLIA256, CAMELLIA

密码套件使用128位CAMELLIA, 256位CAMELLIA或128/256位CAMELLIA。

CHACHA20

使用ChaCha20的密码套件。

3DES

使用三重DES的密码套件。

DES

使用DES(不是三重DES)的密码套件。所有这些密码套件在OpenSSL 1.1.0中都被删除了。

RC4

使用RC4的密码套件

RC2

使用RC2的密码套件

IDEA

使用IDEA的密码套件。

SEED

使用SEED的密码套件。

MD5

使用MD5的密码套件。

SHA1, SHA
使用SHA1的密码套件。
SHA256, SHA384
使用SHA256或SHA384的加密套件
aGOST
Cipher suites using GOST R 34.10 (either 2001 or 94) for authentication (needs an engine supporting GOST algorithms).
aGOST01
Cipher suites using GOST R 34.10-2001 authentication.
kGOST

Cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.

GOST94

Cipher suites, using HMAC based on GOST R 34.11-94.

GOST89MAC

Cipher suites using GOST 28147-89 MAC instead of HMAC.

PSK
All cipher suites using pre-shared keys (PSK).
kPSK, kECDHEPSK, kDHEPSK, kRSAPSK
Cipher suites using PSK key exchange, ECDHE_PSK, DHE_PSK or RSA_PSK.
aPSK
Cipher suites using PSK authentication (currently all PSK modes apart from RSA_PSK).
SUITEB128, SUITEB128ONLY, SUITEB192
Enables suite B mode of operation using 128 (permitting 192 bit mode by peer) 128 bit (not permitting 192 bit by peer) or 192 bit level of security respectively. If used these cipherstrings should appear first in the cipher list and anything after them is ignored. Setting Suite B mode has additional consequences required to comply with RFC6460. In particular the supported signature algorithms is reduced to support only ECDSA and SHA256 or SHA384, only the elliptic curves P-256 and P-384 can be used and only the two suite B compliant ciphersuites (ECDHE-ECDSA-AES128-GCM-SHA256 and ECDHE-ECDSA-AES256-GCM-SHA384) are permissible.

CIPHER SUITE NAMES

下面的列表给出了来自相关规范的SSL或TLS加密套件名称以及与Openssl库类似的同产品的加密套件。需要注意的是,一些密码套件名不包含所使用的身份验证,例如DES-CBC3-SHA。在这些情况下使用RSA身份验证。

SSL v3.0 cipher suites
 SSL_RSA_WITH_NULL_MD5                   NULL-MD5
 SSL_RSA_WITH_NULL_SHA                   NULL-SHA
 SSL_RSA_WITH_RC4_128_MD5                RC4-MD5
 SSL_RSA_WITH_RC4_128_SHA                RC4-SHA
 SSL_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHA
 SSL_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA

 SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA        DH-DSS-DES-CBC3-SHA
 SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA        DH-RSA-DES-CBC3-SHA
 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA       DHE-DSS-DES-CBC3-SHA
 SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHA

 SSL_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5
 SSL_DH_anon_WITH_3DES_EDE_CBC_SHA       ADH-DES-CBC3-SHA

 SSL_FORTEZZA_KEA_WITH_NULL_SHA          Not implemented.
 SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA  Not implemented.
 SSL_FORTEZZA_KEA_WITH_RC4_128_SHA       Not implemented.
TLS v1.0 cipher suites
TLS_RSA_WITH_NULL_MD5                   NULL-MD5
 TLS_RSA_WITH_NULL_SHA                   NULL-SHA
 TLS_RSA_WITH_RC4_128_MD5                RC4-MD5
 TLS_RSA_WITH_RC4_128_SHA                RC4-SHA
 TLS_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHA
 TLS_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHA

 TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA        Not implemented.
 TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA        Not implemented.
 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA       DHE-DSS-DES-CBC3-SHA
 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHA

 TLS_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5
 TLS_DH_anon_WITH_3DES_EDE_CBC_SHA       ADH-DES-CBC3-SHA
AES ciphersuites from RFC3268, extending TLS v1.0
 TLS_RSA_WITH_AES_128_CBC_SHA            AES128-SHA
 TLS_RSA_WITH_AES_256_CBC_SHA            AES256-SHA

 TLS_DH_DSS_WITH_AES_128_CBC_SHA         DH-DSS-AES128-SHA
 TLS_DH_DSS_WITH_AES_256_CBC_SHA         DH-DSS-AES256-SHA
 TLS_DH_RSA_WITH_AES_128_CBC_SHA         DH-RSA-AES128-SHA
 TLS_DH_RSA_WITH_AES_256_CBC_SHA         DH-RSA-AES256-SHA

 TLS_DHE_DSS_WITH_AES_128_CBC_SHA        DHE-DSS-AES128-SHA
 TLS_DHE_DSS_WITH_AES_256_CBC_SHA        DHE-DSS-AES256-SHA
 TLS_DHE_RSA_WITH_AES_128_CBC_SHA        DHE-RSA-AES128-SHA
 TLS_DHE_RSA_WITH_AES_256_CBC_SHA        DHE-RSA-AES256-SHA

 TLS_DH_anon_WITH_AES_128_CBC_SHA        ADH-AES128-SHA
 TLS_DH_anon_WITH_AES_256_CBC_SHA        ADH-AES256-SHA
Camellia ciphersuites from RFC4132, extending TLS v1.0
 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA      CAMELLIA128-SHA
 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA      CAMELLIA256-SHA

 TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA   DH-DSS-CAMELLIA128-SHA
 TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA   DH-DSS-CAMELLIA256-SHA
 TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA   DH-RSA-CAMELLIA128-SHA
 TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA   DH-RSA-CAMELLIA256-SHA

 TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA  DHE-DSS-CAMELLIA128-SHA
 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA  DHE-DSS-CAMELLIA256-SHA
 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA  DHE-RSA-CAMELLIA128-SHA
 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA  DHE-RSA-CAMELLIA256-SHA

 TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA  ADH-CAMELLIA128-SHA
 TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA  ADH-CAMELLIA256-SHA
SEED ciphersuites from RFC4162, extending TLS v1.0
TLS_RSA_WITH_SEED_CBC_SHA              SEED-SHA

 TLS_DH_DSS_WITH_SEED_CBC_SHA           DH-DSS-SEED-SHA
 TLS_DH_RSA_WITH_SEED_CBC_SHA           DH-RSA-SEED-SHA

 TLS_DHE_DSS_WITH_SEED_CBC_SHA          DHE-DSS-SEED-SHA
 TLS_DHE_RSA_WITH_SEED_CBC_SHA          DHE-RSA-SEED-SHA

 TLS_DH_anon_WITH_SEED_CBC_SHA          ADH-SEED-SHA
GOST ciphersuites from draft-chudov-cryptopro-cptls, extending TLS v1.0

注意: 这些密码需要包含GOST加密算法的引擎,例如在OpenSSL发行版中包含的ccgost引擎

 TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94-GOST89-GOST89
 TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89
 TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94
 TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001-NULL-GOST94
Additional Export 1024 and other cipher suites

注意:这些密码也可以在SSL v3中使用

 TLS_DHE_DSS_WITH_RC4_128_SHA            DHE-DSS-RC4-SHA
Elliptic curve cipher suites.
TLS_ECDHE_RSA_WITH_NULL_SHA             ECDHE-RSA-NULL-SHA
 TLS_ECDHE_RSA_WITH_RC4_128_SHA          ECDHE-RSA-RC4-SHA
 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA     ECDHE-RSA-DES-CBC3-SHA
 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      ECDHE-RSA-AES128-SHA
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      ECDHE-RSA-AES256-SHA

 TLS_ECDHE_ECDSA_WITH_NULL_SHA           ECDHE-ECDSA-NULL-SHA
 TLS_ECDHE_ECDSA_WITH_RC4_128_SHA        ECDHE-ECDSA-RC4-SHA
 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA   ECDHE-ECDSA-DES-CBC3-SHA
 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    ECDHE-ECDSA-AES128-SHA
 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    ECDHE-ECDSA-AES256-SHA

 TLS_ECDH_anon_WITH_NULL_SHA             AECDH-NULL-SHA
 TLS_ECDH_anon_WITH_RC4_128_SHA          AECDH-RC4-SHA
 TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA     AECDH-DES-CBC3-SHA
 TLS_ECDH_anon_WITH_AES_128_CBC_SHA      AECDH-AES128-SHA
 TLS_ECDH_anon_WITH_AES_256_CBC_SHA      AECDH-AES256-SHA
TLS v1.2 cipher suites
TLS_RSA_WITH_NULL_SHA256                  NULL-SHA256

 TLS_RSA_WITH_AES_128_CBC_SHA256           AES128-SHA256
 TLS_RSA_WITH_AES_256_CBC_SHA256           AES256-SHA256
 TLS_RSA_WITH_AES_128_GCM_SHA256           AES128-GCM-SHA256
 TLS_RSA_WITH_AES_256_GCM_SHA384           AES256-GCM-SHA384

 TLS_DH_RSA_WITH_AES_128_CBC_SHA256        DH-RSA-AES128-SHA256
 TLS_DH_RSA_WITH_AES_256_CBC_SHA256        DH-RSA-AES256-SHA256
 TLS_DH_RSA_WITH_AES_128_GCM_SHA256        DH-RSA-AES128-GCM-SHA256
 TLS_DH_RSA_WITH_AES_256_GCM_SHA384        DH-RSA-AES256-GCM-SHA384

 TLS_DH_DSS_WITH_AES_128_CBC_SHA256        DH-DSS-AES128-SHA256
 TLS_DH_DSS_WITH_AES_256_CBC_SHA256        DH-DSS-AES256-SHA256
 TLS_DH_DSS_WITH_AES_128_GCM_SHA256        DH-DSS-AES128-GCM-SHA256
 TLS_DH_DSS_WITH_AES_256_GCM_SHA384        DH-DSS-AES256-GCM-SHA384

 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256       DHE-RSA-AES128-SHA256
 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256       DHE-RSA-AES256-SHA256
 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256       DHE-RSA-AES128-GCM-SHA256
 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384       DHE-RSA-AES256-GCM-SHA384

 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256       DHE-DSS-AES128-SHA256
 TLS_DHE_DSS_WITH_AES_256_CBC_SHA256       DHE-DSS-AES256-SHA256
 TLS_DHE_DSS_WITH_AES_128_GCM_SHA256       DHE-DSS-AES128-GCM-SHA256
 TLS_DHE_DSS_WITH_AES_256_GCM_SHA384       DHE-DSS-AES256-GCM-SHA384

 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256     ECDHE-RSA-AES128-SHA256
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384     ECDHE-RSA-AES256-SHA384
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256     ECDHE-RSA-AES128-GCM-SHA256
 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384     ECDHE-RSA-AES256-GCM-SHA384

 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256   ECDHE-ECDSA-AES128-SHA256
 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   ECDHE-ECDSA-AES256-SHA384
 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256   ECDHE-ECDSA-AES128-GCM-SHA256
 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384   ECDHE-ECDSA-AES256-GCM-SHA384

 TLS_DH_anon_WITH_AES_128_CBC_SHA256       ADH-AES128-SHA256
 TLS_DH_anon_WITH_AES_256_CBC_SHA256       ADH-AES256-SHA256
 TLS_DH_anon_WITH_AES_128_GCM_SHA256       ADH-AES128-GCM-SHA256
 TLS_DH_anon_WITH_AES_256_GCM_SHA384       ADH-AES256-GCM-SHA384

 RSA_WITH_AES_128_CCM                      AES128-CCM
 RSA_WITH_AES_256_CCM                      AES256-CCM
 DHE_RSA_WITH_AES_128_CCM                  DHE-RSA-AES128-CCM
 DHE_RSA_WITH_AES_256_CCM                  DHE-RSA-AES256-CCM
 RSA_WITH_AES_128_CCM_8                    AES128-CCM8
 RSA_WITH_AES_256_CCM_8                    AES256-CCM8
 DHE_RSA_WITH_AES_128_CCM_8                DHE-RSA-AES128-CCM8
 DHE_RSA_WITH_AES_256_CCM_8                DHE-RSA-AES256-CCM8
 ECDHE_ECDSA_WITH_AES_128_CCM              ECDHE-ECDSA-AES128-CCM
 ECDHE_ECDSA_WITH_AES_256_CCM              ECDHE-ECDSA-AES256-CCM
 ECDHE_ECDSA_WITH_AES_128_CCM_8            ECDHE-ECDSA-AES128-CCM8
 ECDHE_ECDSA_WITH_AES_256_CCM_8            ECDHE-ECDSA-AES256-CCM8
Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE-ECDSA-CAMELLIA128-SHA256
 TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE-ECDSA-CAMELLIA256-SHA384
 TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256   ECDHE-RSA-CAMELLIA128-SHA256
 TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384   ECDHE-RSA-CAMELLIA256-SHA384
Pre-shared keying (PSK) ciphersuites
PSK_WITH_NULL_SHA                         PSK-NULL-SHA
 DHE_PSK_WITH_NULL_SHA                     DHE-PSK-NULL-SHA
 RSA_PSK_WITH_NULL_SHA                     RSA-PSK-NULL-SHA

 PSK_WITH_RC4_128_SHA                      PSK-RC4-SHA
 PSK_WITH_3DES_EDE_CBC_SHA                 PSK-3DES-EDE-CBC-SHA
 PSK_WITH_AES_128_CBC_SHA                  PSK-AES128-CBC-SHA
 PSK_WITH_AES_256_CBC_SHA                  PSK-AES256-CBC-SHA

 DHE_PSK_WITH_RC4_128_SHA                  DHE-PSK-RC4-SHA
 DHE_PSK_WITH_3DES_EDE_CBC_SHA             DHE-PSK-3DES-EDE-CBC-SHA
 DHE_PSK_WITH_AES_128_CBC_SHA              DHE-PSK-AES128-CBC-SHA
 DHE_PSK_WITH_AES_256_CBC_SHA              DHE-PSK-AES256-CBC-SHA

 RSA_PSK_WITH_RC4_128_SHA                  RSA-PSK-RC4-SHA
 RSA_PSK_WITH_3DES_EDE_CBC_SHA             RSA-PSK-3DES-EDE-CBC-SHA
 RSA_PSK_WITH_AES_128_CBC_SHA              RSA-PSK-AES128-CBC-SHA
 RSA_PSK_WITH_AES_256_CBC_SHA              RSA-PSK-AES256-CBC-SHA

 PSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256
 PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384
 DHE_PSK_WITH_AES_128_GCM_SHA256           DHE-PSK-AES128-GCM-SHA256
 DHE_PSK_WITH_AES_256_GCM_SHA384           DHE-PSK-AES256-GCM-SHA384
 RSA_PSK_WITH_AES_128_GCM_SHA256           RSA-PSK-AES128-GCM-SHA256
 RSA_PSK_WITH_AES_256_GCM_SHA384           RSA-PSK-AES256-GCM-SHA384

 PSK_WITH_AES_128_CBC_SHA256               PSK-AES128-CBC-SHA256
 PSK_WITH_AES_256_CBC_SHA384               PSK-AES256-CBC-SHA384
 PSK_WITH_NULL_SHA256                      PSK-NULL-SHA256
 PSK_WITH_NULL_SHA384                      PSK-NULL-SHA384
 DHE_PSK_WITH_AES_128_CBC_SHA256           DHE-PSK-AES128-CBC-SHA256
 DHE_PSK_WITH_AES_256_CBC_SHA384           DHE-PSK-AES256-CBC-SHA384
 DHE_PSK_WITH_NULL_SHA256                  DHE-PSK-NULL-SHA256
 DHE_PSK_WITH_NULL_SHA384                  DHE-PSK-NULL-SHA384
 RSA_PSK_WITH_AES_128_CBC_SHA256           RSA-PSK-AES128-CBC-SHA256
 RSA_PSK_WITH_AES_256_CBC_SHA384           RSA-PSK-AES256-CBC-SHA384
 RSA_PSK_WITH_NULL_SHA256                  RSA-PSK-NULL-SHA256
 RSA_PSK_WITH_NULL_SHA384                  RSA-PSK-NULL-SHA384
 PSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256
 PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384

 ECDHE_PSK_WITH_RC4_128_SHA                ECDHE-PSK-RC4-SHA
 ECDHE_PSK_WITH_3DES_EDE_CBC_SHA           ECDHE-PSK-3DES-EDE-CBC-SHA
 ECDHE_PSK_WITH_AES_128_CBC_SHA            ECDHE-PSK-AES128-CBC-SHA
 ECDHE_PSK_WITH_AES_256_CBC_SHA            ECDHE-PSK-AES256-CBC-SHA
 ECDHE_PSK_WITH_AES_128_CBC_SHA256         ECDHE-PSK-AES128-CBC-SHA256
 ECDHE_PSK_WITH_AES_256_CBC_SHA384         ECDHE-PSK-AES256-CBC-SHA384
 ECDHE_PSK_WITH_NULL_SHA                   ECDHE-PSK-NULL-SHA
 ECDHE_PSK_WITH_NULL_SHA256                ECDHE-PSK-NULL-SHA256
 ECDHE_PSK_WITH_NULL_SHA384                ECDHE-PSK-NULL-SHA384

 PSK_WITH_CAMELLIA_128_CBC_SHA256          PSK-CAMELLIA128-SHA256
 PSK_WITH_CAMELLIA_256_CBC_SHA384          PSK-CAMELLIA256-SHA384

 DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256      DHE-PSK-CAMELLIA128-SHA256
 DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384      DHE-PSK-CAMELLIA256-SHA384

 RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256      RSA-PSK-CAMELLIA128-SHA256
 RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384      RSA-PSK-CAMELLIA256-SHA384

 ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256    ECDHE-PSK-CAMELLIA128-SHA256
 ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384    ECDHE-PSK-CAMELLIA256-SHA384

 PSK_WITH_AES_128_CCM                      PSK-AES128-CCM
 PSK_WITH_AES_256_CCM                      PSK-AES256-CCM
 DHE_PSK_WITH_AES_128_CCM                  DHE-PSK-AES128-CCM
 DHE_PSK_WITH_AES_256_CCM                  DHE-PSK-AES256-CCM
 PSK_WITH_AES_128_CCM_8                    PSK-AES128-CCM8
 PSK_WITH_AES_256_CCM_8                    PSK-AES256-CCM8
 DHE_PSK_WITH_AES_128_CCM_8                DHE-PSK-AES128-CCM8
 DHE_PSK_WITH_AES_256_CCM_8                DHE-PSK-AES256-CCM8
ChaCha20-Poly1305 cipher suites, extending TLS v1.2
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256      ECDHE-RSA-CHACHA20-POLY1305
 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256    ECDHE-ECDSA-CHACHA20-POLY1305
 TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256        DHE-RSA-CHACHA20-POLY1305
 TLS_PSK_WITH_CHACHA20_POLY1305_SHA256            PSK-CHACHA20-POLY1305
 TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256      ECDHE-PSK-CHACHA20-POLY1305
 TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256        DHE-PSK-CHACHA20-POLY1305
 TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256        RSA-PSK-CHACHA20-POLY1305
Older names used by OpenSSL
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA    EDH-RSA-DES-CBC3-SHA (DHE-RSA-DES-CBC3-SHA)
 SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA    EDH-DSS-DES-CBC3-SHA (DHE-DSS-DES-CBC3-SHA)

NOTES

一些编译版本的OpenSSL可能不包括这里列出的所有密码,因为有些密码在编译时被排除在外了。

EXAMPLES

Verbose listing of all OpenSSL ciphers including NULL ciphers:

 openssl ciphers -v 'ALL:eNULL'

Include all ciphers except NULL and anonymous DH then sort by strength:

 openssl ciphers -v 'ALL:!ADH:@STRENGTH'

Include all ciphers except ones with no encryption (eNULL) or no authentication (aNULL):

 openssl ciphers -v 'ALL:!aNULL'

Include only 3DES ciphers and then place RSA ciphers last:

 openssl ciphers -v '3DES:+RSA'

Include all RC4 ciphers but leave out those without authentication:

 openssl ciphers -v 'RC4:!COMPLEMENTOFDEFAULT'

Include all ciphers with RSA authentication but leave out ciphers without encryption.

 openssl ciphers -v 'RSA:!COMPLEMENTOFALL'

Set security level to 2 and display all ciphers consistent with level 2:

 openssl ciphers -s -v 'ALL:@SECLEVEL=2'

参考:
https://www.openssl.org/docs/man1.1.0/man1/ciphers.html

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值