说起加密套件(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-MD5SSL_RSA_WITH_NULL_SHA                   NULL-SHASSL_RSA_WITH_RC4_128_MD5                RC4-MD5SSL_RSA_WITH_RC4_128_SHA                RC4-SHASSL_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHASSL_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHASSL_DH_DSS_WITH_3DES_EDE_CBC_SHA        DH-DSS-DES-CBC3-SHASSL_DH_RSA_WITH_3DES_EDE_CBC_SHA        DH-RSA-DES-CBC3-SHASSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA       DHE-DSS-DES-CBC3-SHASSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHASSL_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5SSL_DH_anon_WITH_3DES_EDE_CBC_SHA       ADH-DES-CBC3-SHASSL_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-MD5TLS_RSA_WITH_NULL_SHA                   NULL-SHATLS_RSA_WITH_RC4_128_MD5                RC4-MD5TLS_RSA_WITH_RC4_128_SHA                RC4-SHATLS_RSA_WITH_IDEA_CBC_SHA               IDEA-CBC-SHATLS_RSA_WITH_3DES_EDE_CBC_SHA           DES-CBC3-SHATLS_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-SHATLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA       DHE-RSA-DES-CBC3-SHATLS_DH_anon_WITH_RC4_128_MD5            ADH-RC4-MD5TLS_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-SHATLS_RSA_WITH_AES_256_CBC_SHA            AES256-SHATLS_DH_DSS_WITH_AES_128_CBC_SHA         DH-DSS-AES128-SHATLS_DH_DSS_WITH_AES_256_CBC_SHA         DH-DSS-AES256-SHATLS_DH_RSA_WITH_AES_128_CBC_SHA         DH-RSA-AES128-SHATLS_DH_RSA_WITH_AES_256_CBC_SHA         DH-RSA-AES256-SHATLS_DHE_DSS_WITH_AES_128_CBC_SHA        DHE-DSS-AES128-SHATLS_DHE_DSS_WITH_AES_256_CBC_SHA        DHE-DSS-AES256-SHATLS_DHE_RSA_WITH_AES_128_CBC_SHA        DHE-RSA-AES128-SHATLS_DHE_RSA_WITH_AES_256_CBC_SHA        DHE-RSA-AES256-SHATLS_DH_anon_WITH_AES_128_CBC_SHA        ADH-AES128-SHATLS_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-SHATLS_RSA_WITH_CAMELLIA_256_CBC_SHA      CAMELLIA256-SHATLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA   DH-DSS-CAMELLIA128-SHATLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA   DH-DSS-CAMELLIA256-SHATLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA   DH-RSA-CAMELLIA128-SHATLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA   DH-RSA-CAMELLIA256-SHATLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA  DHE-DSS-CAMELLIA128-SHATLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA  DHE-DSS-CAMELLIA256-SHATLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA  DHE-RSA-CAMELLIA128-SHATLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA  DHE-RSA-CAMELLIA256-SHATLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA  ADH-CAMELLIA128-SHATLS_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-SHATLS_DH_DSS_WITH_SEED_CBC_SHA           DH-DSS-SEED-SHATLS_DH_RSA_WITH_SEED_CBC_SHA           DH-RSA-SEED-SHATLS_DHE_DSS_WITH_SEED_CBC_SHA          DHE-DSS-SEED-SHATLS_DHE_RSA_WITH_SEED_CBC_SHA          DHE-RSA-SEED-SHATLS_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-GOST89TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94TLS_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-SHATLS_ECDHE_RSA_WITH_RC4_128_SHA          ECDHE-RSA-RC4-SHATLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA     ECDHE-RSA-DES-CBC3-SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      ECDHE-RSA-AES128-SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      ECDHE-RSA-AES256-SHATLS_ECDHE_ECDSA_WITH_NULL_SHA           ECDHE-ECDSA-NULL-SHATLS_ECDHE_ECDSA_WITH_RC4_128_SHA        ECDHE-ECDSA-RC4-SHATLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA   ECDHE-ECDSA-DES-CBC3-SHATLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    ECDHE-ECDSA-AES128-SHATLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    ECDHE-ECDSA-AES256-SHATLS_ECDH_anon_WITH_NULL_SHA             AECDH-NULL-SHATLS_ECDH_anon_WITH_RC4_128_SHA          AECDH-RC4-SHATLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA     AECDH-DES-CBC3-SHATLS_ECDH_anon_WITH_AES_128_CBC_SHA      AECDH-AES128-SHATLS_ECDH_anon_WITH_AES_256_CBC_SHA      AECDH-AES256-SHA

TLS v1.2 cipher suites

TLS_RSA_WITH_NULL_SHA256                  NULL-SHA256TLS_RSA_WITH_AES_128_CBC_SHA256           AES128-SHA256TLS_RSA_WITH_AES_256_CBC_SHA256           AES256-SHA256TLS_RSA_WITH_AES_128_GCM_SHA256           AES128-GCM-SHA256TLS_RSA_WITH_AES_256_GCM_SHA384           AES256-GCM-SHA384TLS_DH_RSA_WITH_AES_128_CBC_SHA256        DH-RSA-AES128-SHA256TLS_DH_RSA_WITH_AES_256_CBC_SHA256        DH-RSA-AES256-SHA256TLS_DH_RSA_WITH_AES_128_GCM_SHA256        DH-RSA-AES128-GCM-SHA256TLS_DH_RSA_WITH_AES_256_GCM_SHA384        DH-RSA-AES256-GCM-SHA384TLS_DH_DSS_WITH_AES_128_CBC_SHA256        DH-DSS-AES128-SHA256TLS_DH_DSS_WITH_AES_256_CBC_SHA256        DH-DSS-AES256-SHA256TLS_DH_DSS_WITH_AES_128_GCM_SHA256        DH-DSS-AES128-GCM-SHA256TLS_DH_DSS_WITH_AES_256_GCM_SHA384        DH-DSS-AES256-GCM-SHA384TLS_DHE_RSA_WITH_AES_128_CBC_SHA256       DHE-RSA-AES128-SHA256TLS_DHE_RSA_WITH_AES_256_CBC_SHA256       DHE-RSA-AES256-SHA256TLS_DHE_RSA_WITH_AES_128_GCM_SHA256       DHE-RSA-AES128-GCM-SHA256TLS_DHE_RSA_WITH_AES_256_GCM_SHA384       DHE-RSA-AES256-GCM-SHA384TLS_DHE_DSS_WITH_AES_128_CBC_SHA256       DHE-DSS-AES128-SHA256TLS_DHE_DSS_WITH_AES_256_CBC_SHA256       DHE-DSS-AES256-SHA256TLS_DHE_DSS_WITH_AES_128_GCM_SHA256       DHE-DSS-AES128-GCM-SHA256TLS_DHE_DSS_WITH_AES_256_GCM_SHA384       DHE-DSS-AES256-GCM-SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256     ECDHE-RSA-AES128-SHA256TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384     ECDHE-RSA-AES256-SHA384TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256     ECDHE-RSA-AES128-GCM-SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384     ECDHE-RSA-AES256-GCM-SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256   ECDHE-ECDSA-AES128-SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384   ECDHE-ECDSA-AES256-SHA384TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256   ECDHE-ECDSA-AES128-GCM-SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384   ECDHE-ECDSA-AES256-GCM-SHA384TLS_DH_anon_WITH_AES_128_CBC_SHA256       ADH-AES128-SHA256TLS_DH_anon_WITH_AES_256_CBC_SHA256       ADH-AES256-SHA256TLS_DH_anon_WITH_AES_128_GCM_SHA256       ADH-AES128-GCM-SHA256TLS_DH_anon_WITH_AES_256_GCM_SHA384       ADH-AES256-GCM-SHA384RSA_WITH_AES_128_CCM                      AES128-CCMRSA_WITH_AES_256_CCM                      AES256-CCMDHE_RSA_WITH_AES_128_CCM                  DHE-RSA-AES128-CCMDHE_RSA_WITH_AES_256_CCM                  DHE-RSA-AES256-CCMRSA_WITH_AES_128_CCM_8                    AES128-CCM8RSA_WITH_AES_256_CCM_8                    AES256-CCM8DHE_RSA_WITH_AES_128_CCM_8                DHE-RSA-AES128-CCM8DHE_RSA_WITH_AES_256_CCM_8                DHE-RSA-AES256-CCM8ECDHE_ECDSA_WITH_AES_128_CCM              ECDHE-ECDSA-AES128-CCMECDHE_ECDSA_WITH_AES_256_CCM              ECDHE-ECDSA-AES256-CCMECDHE_ECDSA_WITH_AES_128_CCM_8            ECDHE-ECDSA-AES128-CCM8ECDHE_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-SHA256TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE-ECDSA-CAMELLIA256-SHA384TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256   ECDHE-RSA-CAMELLIA128-SHA256TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384   ECDHE-RSA-CAMELLIA256-SHA384

Pre-shared keying (PSK) ciphersuites

PSK_WITH_NULL_SHA                         PSK-NULL-SHADHE_PSK_WITH_NULL_SHA                     DHE-PSK-NULL-SHARSA_PSK_WITH_NULL_SHA                     RSA-PSK-NULL-SHAPSK_WITH_RC4_128_SHA                      PSK-RC4-SHAPSK_WITH_3DES_EDE_CBC_SHA                 PSK-3DES-EDE-CBC-SHAPSK_WITH_AES_128_CBC_SHA                  PSK-AES128-CBC-SHAPSK_WITH_AES_256_CBC_SHA                  PSK-AES256-CBC-SHADHE_PSK_WITH_RC4_128_SHA                  DHE-PSK-RC4-SHADHE_PSK_WITH_3DES_EDE_CBC_SHA             DHE-PSK-3DES-EDE-CBC-SHADHE_PSK_WITH_AES_128_CBC_SHA              DHE-PSK-AES128-CBC-SHADHE_PSK_WITH_AES_256_CBC_SHA              DHE-PSK-AES256-CBC-SHARSA_PSK_WITH_RC4_128_SHA                  RSA-PSK-RC4-SHARSA_PSK_WITH_3DES_EDE_CBC_SHA             RSA-PSK-3DES-EDE-CBC-SHARSA_PSK_WITH_AES_128_CBC_SHA              RSA-PSK-AES128-CBC-SHARSA_PSK_WITH_AES_256_CBC_SHA              RSA-PSK-AES256-CBC-SHAPSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384DHE_PSK_WITH_AES_128_GCM_SHA256           DHE-PSK-AES128-GCM-SHA256DHE_PSK_WITH_AES_256_GCM_SHA384           DHE-PSK-AES256-GCM-SHA384RSA_PSK_WITH_AES_128_GCM_SHA256           RSA-PSK-AES128-GCM-SHA256RSA_PSK_WITH_AES_256_GCM_SHA384           RSA-PSK-AES256-GCM-SHA384PSK_WITH_AES_128_CBC_SHA256               PSK-AES128-CBC-SHA256PSK_WITH_AES_256_CBC_SHA384               PSK-AES256-CBC-SHA384PSK_WITH_NULL_SHA256                      PSK-NULL-SHA256PSK_WITH_NULL_SHA384                      PSK-NULL-SHA384DHE_PSK_WITH_AES_128_CBC_SHA256           DHE-PSK-AES128-CBC-SHA256DHE_PSK_WITH_AES_256_CBC_SHA384           DHE-PSK-AES256-CBC-SHA384DHE_PSK_WITH_NULL_SHA256                  DHE-PSK-NULL-SHA256DHE_PSK_WITH_NULL_SHA384                  DHE-PSK-NULL-SHA384RSA_PSK_WITH_AES_128_CBC_SHA256           RSA-PSK-AES128-CBC-SHA256RSA_PSK_WITH_AES_256_CBC_SHA384           RSA-PSK-AES256-CBC-SHA384RSA_PSK_WITH_NULL_SHA256                  RSA-PSK-NULL-SHA256RSA_PSK_WITH_NULL_SHA384                  RSA-PSK-NULL-SHA384PSK_WITH_AES_128_GCM_SHA256               PSK-AES128-GCM-SHA256PSK_WITH_AES_256_GCM_SHA384               PSK-AES256-GCM-SHA384ECDHE_PSK_WITH_RC4_128_SHA                ECDHE-PSK-RC4-SHAECDHE_PSK_WITH_3DES_EDE_CBC_SHA           ECDHE-PSK-3DES-EDE-CBC-SHAECDHE_PSK_WITH_AES_128_CBC_SHA            ECDHE-PSK-AES128-CBC-SHAECDHE_PSK_WITH_AES_256_CBC_SHA            ECDHE-PSK-AES256-CBC-SHAECDHE_PSK_WITH_AES_128_CBC_SHA256         ECDHE-PSK-AES128-CBC-SHA256ECDHE_PSK_WITH_AES_256_CBC_SHA384         ECDHE-PSK-AES256-CBC-SHA384ECDHE_PSK_WITH_NULL_SHA                   ECDHE-PSK-NULL-SHAECDHE_PSK_WITH_NULL_SHA256                ECDHE-PSK-NULL-SHA256ECDHE_PSK_WITH_NULL_SHA384                ECDHE-PSK-NULL-SHA384PSK_WITH_CAMELLIA_128_CBC_SHA256          PSK-CAMELLIA128-SHA256PSK_WITH_CAMELLIA_256_CBC_SHA384          PSK-CAMELLIA256-SHA384DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256      DHE-PSK-CAMELLIA128-SHA256DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384      DHE-PSK-CAMELLIA256-SHA384RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256      RSA-PSK-CAMELLIA128-SHA256RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384      RSA-PSK-CAMELLIA256-SHA384ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256    ECDHE-PSK-CAMELLIA128-SHA256ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384    ECDHE-PSK-CAMELLIA256-SHA384PSK_WITH_AES_128_CCM                      PSK-AES128-CCMPSK_WITH_AES_256_CCM                      PSK-AES256-CCMDHE_PSK_WITH_AES_128_CCM                  DHE-PSK-AES128-CCMDHE_PSK_WITH_AES_256_CCM                  DHE-PSK-AES256-CCMPSK_WITH_AES_128_CCM_8                    PSK-AES128-CCM8PSK_WITH_AES_256_CCM_8                    PSK-AES256-CCM8DHE_PSK_WITH_AES_128_CCM_8                DHE-PSK-AES128-CCM8DHE_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-POLY1305TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256    ECDHE-ECDSA-CHACHA20-POLY1305TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256        DHE-RSA-CHACHA20-POLY1305TLS_PSK_WITH_CHACHA20_POLY1305_SHA256            PSK-CHACHA20-POLY1305TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256      ECDHE-PSK-CHACHA20-POLY1305TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256        DHE-PSK-CHACHA20-POLY1305TLS_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

openssl密码套件详解相关推荐

  1. 【ssl认证、证书】openssl genrsa 命令详解

    文章目录 一.openssl genrsa 命令介绍 二.openssl genrsa 命令的语法及选项 三.实例 1.生成512位的 RSA 秘钥,输出到屏幕. 2.生成512位 RSA 私钥,输出 ...

  2. mysql数据库表添加加密密码_数据库账号密码加密详解及实例

    数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...

  3. CentOS修改root密码-图文详解

    目录 单用户模式修改root密码-图文详解 单用户模式修改root密码-图文详解 1.开机出现读条界面时,点击键盘 e 键进入编辑模式 2.按方向键进行滑动,找到 linux 开头的行,将 ro 修改 ...

  4. 【原创】无线破解Aircrack-ng套件详解--airmon-ng与airodump-ng

    一:Aircrack-ng详解 1.1 Aircrack-ng概述 Aircrack-ng是一款用于破解无线802.11WEP及WPA-PSK加密的工具,该工具在2005年11月之前名字是Aircra ...

  5. 【原创】无线破解Aircrack-ng套件详解(一)--airmon-ng与airodump-ng

    一:Aircrack-ng详解 1.1 Aircrack-ng概述 Aircrack-ng是一款用于破解无线802.11WEP及WPA-PSK加密的工具,该工具在2005年11月之前名字是Aircra ...

  6. IBM服务器win7系统忘记密码,图文详解Win7系统忘记开机密码的处理方法

    许多小伙伴都遇到过Win7系统忘记开机密码的问题,虽说设置开机密码能保护系统安全,但偶尔也会出现忘记密码的情况,这要怎么办?难道没办法操作系统了吗?别着急,这里图文详解一下Win7系统忘记开机密码的处 ...

  7. mysql重置root密码centos_详解如何在Linux(CentOS)下重置MySQL根(Root)密码

    本例中以CentOS6.6下修改MySQL5.1.73举例说明. 1.首先输入"service mysqld status"查看当前mysql服务状态,下图显示正在mysqld服务 ...

  8. linux 账号密码 字段,详解Linux中的用户密码管理命令passwd和change

    passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用此项. -u 恢复账号密码.效果相当于usermod -U,同 ...

  9. 【转】linux /centos 中OpenSSL升级方法详解

    相关软件下载地址Apache:http://httpd.apache.org/ Nginx:http://nginx.org/en/download.html OpenSSL:http://www.o ...

  10. 密码算法详解——AES

    0 AES简介 我们知道数据加密标准(Data Encryption Standard: DES)的密钥长度是56比特,因此算法的理论安全强度是256.但二十世纪中后期正是计算机飞速发展的阶段,元器件 ...

最新文章

  1. 【转】sed 简明教程
  2. 电机PID实验--一文让你看透PID​
  3. 查看windows下系统信息
  4. 2019年普通高等程序员招生统一考试
  5. 蓝桥杯第八届省赛JAVA真题----9数算式
  6. c语言 文件加密头文件,[C语言]文件加密
  7. OCR+NLP 提取信息并分析,这个开源项目火了!
  8. 编译redis-5.0.9报错zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录问题解决
  9. 最新!2022 LaTeX安装教程(Windows)
  10. 《Linux命令行大全》第2版来啦!这一版做了哪些更新?
  11. cv python 读取灰度图
  12. 基于阿里云生活物联网平台的智能家居(物联网,智能家居,STM32,阿里云生活物联网平台,人脸识别,语音识别,语音交互)
  13. QGIS二次开发2:添加矢量、栅格图层及图层列表的实现
  14. 编译flink1.9.0 报flink-fs-hadoop-shaded找不到
  15. 【群晖秘籍】如何在群晖中安装Redis数据库,群晖如何使用套件安装Redis(已解决无法访问问题)!
  16. biu biu biu
  17. 干货丨从冷战到深度学习:一篇图文并茂的机器翻译史
  18. Shiro的认证原理(Subject#login的背后故事)
  19. 锐捷防火墙RG-WALL 1600-M6600E配置
  20. 校园兼职网站php设计,大学生兼职网站的设计开发毕业论文.doc

热门文章

  1. 《小样本学习研究综述》赵凯琳等 Survey on Few-shot Learning,文献阅读笔记
  2. Java求取主析取范式、主合取范式、成真赋值、成假赋值、打印真值表
  3. 如何用一个例子彻底解释白盒测试中语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖?
  4. AppStore安装历史版本,利用Charles抓包安装历史版本
  5. 会考计算机基础操作知识点总结,计算机应用基础会考复习主要知识点
  6. day09、1 - 简单渗透测试流程
  7. 学材分析计算机一体化,计算机一体化课教案.doc
  8. css让全局字体为微软雅黑,wordpress主题通过自定义CSS实现全局更换微软雅黑字体...
  9. 粒子群算法及C++实现
  10. #include和 #includefilename.h的区别