TCP三次握手;
TLS/SSL的连接;
HTTP的请求和响应;
前提介绍(证书校验)
服务端传递一个证书,客户端是怎么来验证其中是没有问题的
1.证书大致包含了哪些数据?
证书的申请者,证书的颁发者,证书的有效期,证书的公钥,证书的指纹,证书的指纹算法,证书的数字签名
2.如何验证证书是否是完整的?
1.首先根据该证书的颁发者找到对应的颁发者的公钥对该证书的数字签名进行解密,然后得到一个证书的指纹和证书的指纹算法;
2根据证书的指纹算法对整个证书进行加密得到指纹;
3对比两个指纹,如果一致说明证书是完整的;
3如何验证证书是否是被全部替换?
在请求网络的时候,可以对比下请求的Url和证书的Url,如果不一致的话,说明证书被全部替换,一致的话说明是正确的证书;
Tcp的三次握手之前的文档已经介绍了,现在来介绍下TLS/SSL的连接过程;
1.客户端->服务端 (安全协议和版本(SSL和TSL), 客户端支持的所有的加密套件列表,client Random);
2服务端->客户端 (安全协议和版本(SSL和TSL),服务端选中的加密套件, server Random, 证书, 秘钥交换服务端的参数)
客户端会去验证该证书的有效性
3.客户端->服务端 (秘钥交换客户端的参数)
这个时候双方都含有了四个数据(client Random, server Random , 秘钥交换客户端参数和服务端参数);
根据后面两个参数等到预主秘钥(Pre-master secret);
最后三个参数生成用以加密会话的会话秘钥;
4.客户端->服务端 (告诉后台去采用会话秘钥去加密);
5.客户端->服务端(使用会话秘钥对之前的的全部报文进行加密,然后传递到服务端)
6.服务端->客户端(使用会话秘钥加密解密,然后结束这段握手,进行之后的htpp请求和响应)