在不使用SSL/TSL加密的HTTP通信就是不加密的通信,所有的信息都是明文传播。带来了以下几个风险:
而SSL/TSL就是为了解决这三大风险而设计的:
SSL/TSL基本思路采用的是公钥加密法,也就是,客户端先向服务器索要公钥,然后用公钥加密信息,服务器收到密文,然后用自己的私钥解密信息。
在实际使用中为了解决公钥被篡改的问题引入了 信任的数字证书 ;
使用非对称加密的公钥加密信息的计算量太大,为了减少计算耗时:
从上面我们可以大致的总结一下SSL/TSL协议的基本过程如下:
客户端向服务端发送加密通信请求,并提交一下信息:
服务端收到客户端请求后,向客户端做出回应。
客户端收到服务器的回应以后,首先验证服务器的证书。如果证书不是可信任机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。
如果证书没问题,客户端就会从证书中获取服务器的公钥,然后向服务器发送以下信息:
上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称"pre-master key"。有了它以后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。
服务端收到客户端的第三个随机数pre-master key后,经过计算生成本次会话所用的秘钥。然后向客户端发送一下信息:
至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用"会话密钥"加密内容。
本文章仅仅是个人学习记录。
参考自 SSL/TLS协议运行机制的概述