TLS主要包含两部分协议,一部分是Record Protocol,描述了数据的格式,另一部分是Handshaking Protocols,描述了握手过程。
握手的目的有两个,一个是保证通信的双方都是自己期待的对方,任何一方都不可能被冒充,另一个是交换加密密码,使得只有通信的双方知道这个密码,而别人不知道。前一个就是我们常说的认证,而后一个就是密码交换。认证是通过证书来达到的,而密码交换是通过证书里面的非对称加密算法(公私钥)来实现的。
握手的交互图
密码套件就是一个密码算法三件套,里面包含了一个非对称加密算法,一个对称加密算法,以及一个数据摘要算法。
以TLS_RSA_WITH_AES_128_CBC_SHA为例,RSA是非对称加密算法,表示后面用到的证书里面的公钥用的是RSA算法,通信的过程中需要签名的地方也用这个算法,并且密码(key)的交换过程也使用这个算法;AES_128_CBC是对称加密算法,用来加密握手后传输的数据,其密码由RSA负责协商生成;SHA是数据摘要算法,表示后面交换的证书里签名用到的摘要算法是sha1,并且后续通信过程中需要用到数据校验的地方也是用的这个算法。在Record Protocol协议中,摘要算法是必须的,即数据包都需要有校验码,而签名是可选的。
HTTPS 密码套件组成
每个 Cipher Suite 是由4个算法原语组合而成:
JETTY jetty-ssl.xml
① 禁用服务的SSL重协商机制
② 禁用不够安全算密码套件,只启用安全密码套件
③ 只启用TLSv1.2和 TLSv1.3 版本
查看服务端是否关闭重协商机制
# openssl s_client -connect 192.168.1.101:8443
查看服务端使用的密码套件
# echo > /dev/tcp/192.168.1.101/8443
# nmap -sV -p 8443 --script ssl* 192.168.1.101
参考
SSL/TLS及证书概述
https://segmentfault.com/a/1190000009002353
基于CentOS7.x构建GeoServer安全加固镜像
https://www.jianshu.com/p/e87e5212e9bd
TLSPARAMS - Cipher Suites
https://blog.csdn.net/phunxm/article/details/72852770