- 密钥交换算法:用于协商会话密钥,如RSA、DH、ECDH等。
- 对称加密算法:用于实际数据传输的加解密,例如AES、3DES等。
- 消息认证码(MAC)或伪随机函数(PRF):用于验证数据完整性及防止篡改,如SHA256等。
如何指定加密套件
- 使用OpenSSL或者Nginx实现SSL/TLS协议时,都需要指定加密套件。
- 一般指定这样指定就可以了,表示指定加密套件为任意算法,但身份认证算法和加密算法不能为空。这样客户端和服务端就会自动协商一个加密套件进行通信。
ssl_ciphers ALL:!aNULL; #Nginx配置加密套件
SSL_CTX_set_cipher_list(ServerCTX, “ALL:!aNULL”); #openssl接口配置加密套件
- 但如果想自己指定加密套件,就可以使用以下列表中的一种。
序号 | 加密套件(完整名称) | 加密套件(openssl接口指定名称) | 版本 | 密钥协商算法 | 身份验证算法 | 加密算法 | MAC |
---|---|---|---|---|---|---|---|
1 | TLS_AES_256_GCM_SHA384 | TLS_AES_256_GCM_SHA384 | TLSv1.3 | any | any | AESGCM(256) | AEAD |
2 | TLS_CHACHA20_POLY1305_SHA256 | TLS_CHACHA20_POLY1305_SHA256 | TLSv1.3 | any | any | CHACHA20/POLY1305(256) | AEAD |
3 | TLS_AES_128_GCM_SHA256 | TLS_AES_128_GCM_SHA256 | TLSv1.3 | any | any | AESGCM(128) | AEAD |
4 | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ECDHE-ECDSA-AES256-GCM-SHA384 | TLSv1.2 | ECDH | ECDSA | AESGCM(256) | AEAD |
5 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ECDHE-RSA-AES256-GCM-SHA384 | TLSv1.2 | ECDH | RSA | AESGCM(256) | AEAD |
6 | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | DHE-RSA-AES256-GCM-SHA384 | TLSv1.2 | DH | RSA | AESGCM(256) | AEAD< |