TLS的子协议
RecordProtocol(记录协议)
AlertProtocol(警报协议)
HandshakeProtocol(握手协议)
HandshakeProtocol
- Client Hello
- Server Hello
- Certificate
- Server Key Exchange
- Certificate Request
- Server Hello Done
- Certificate Verify
- Client Key Exchange
- Encrypted Handshake Message(Client)
- Encrypted Handshake Message(Server)
RecordProtocol
- Change Cipher Spec(Client)
- Change Cipher Spec(Server)
交换随机数
- Client向Server发送Client Hello,内容主要包含,加密套件、随机数 random1
- Server收到报文后从加密套件中选择一个合适的,连同随机数random2,一并发送给Client
这时两端都拥有了random1 和 random2
生成materkey
- Server将数字证书发送给Client
- Client收到报文后,通过本地的证书链验证合法性,解析出Server的公钥。
- Client生成Random3,并使用公钥对Random3进行加密(这个加密串成为PreMasterKey),发送给Server。
- Server对Random3的加密串通过自己的私钥进行解密。
这时两边都同时拥有了random1 random2 random3 - 两边用1和2步骤协商的加密算法,对random1+random2+random3进行加密,生成对称密钥串(MaterKey)
验证合法性
- Client通知Server后续的报文都通过密文传输
- Client通过前面的握手消息生成摘要发送给Server
- Server使用密钥解密,能解密说明密钥可用
- Server通知Client后续的报文都是通过密文传输
- Server通过前面的握手消息生成摘要发送给Client
- Client使用密钥解密,能解密说明密钥可用
合法性验证结束