1、 HTTPS协议==HTTP协议+SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可见,HTTPS协议是由HTTP和SSL/TLS协议一起合作完成的。至于二者之间的区别,HTTP协议有点类似于“裸奔”,他们数据传输是通过明文的形式做传输,即使约定了加密方式,但是第一次传输的时候还是明文;鉴于此,HTTPS使用的是非对称加密,为秘钥的传输外层再做一层保护,非对称加密的一组秘钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密;也可以用私钥加密,用公钥解密。
2、SSL协议:网络安全协议(安全套接层)
1)SSL协议是在传输通信协议上实现的一种安全协议,采用公开秘钥技术,广泛支持各种类型的网络,同时提供三种基本的安全服务:
i、认证用户和服务器,确保数据发送到正确的客户机和服务器;
ii、加密数据以防止数据中途被窃取;
iii、维护数据的完整性,确保数据在传输过程中不被篡改;
2)SSL协议的优势在于它与应用层协议独立无关,高层的应用层协议能透明的建立于SSL协议之上,SSL协议在应用层协议通信之前就已经完成加密算法,通信秘钥协商以及服务器的认证工作;在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性和完整性。
1、客户端给服务端发送第一个http协议请求,进行三步操作:
1)客户端向服务端发送请求获取身份认证(非对称加密公钥;
2)客户端向服务端发送一个比如a = 1的常量;
3)客户端向服务端发送客户端支持的加密算法的列表,服务端中意哪个算法,确定后返回给客户端。
2、服务端接收到客户端的请求后,进行三步操作:
1)服务端采取一种非对称的加密算法,如:RSA算法生成公钥跟私钥对;
2)对公钥通过CA认证机构颁发的证书进行签名,(相当于数字签名);
3)给客户端返回四类数据:将经过签名的公钥返回给客户端、给客户端返回一个如 b = 3 的常量、返回一个计算公式、从客户端发送过来的包含加密算法的列表中确定一个加密算法如:MD5算法 返回给客户端。
3、客户端接收到服务端返回的四类数据后,进行六步操作:
1)获取到服务端返回的经过证书签名后的公钥后,通过CA认证机构校验本次访问的服务端的真伪,如果没问题,则服务端就是真的;
2)客户端生成一个随机字符串如:kfdn,结合服务端返回的 func = a + b + ‘kfdn’ 这个计算公式生成一个协议秘钥 比如:sss;
3)对刚生成的协议秘钥 sss 通过服务端发送过来的公钥加密成密文如:xxx;
4)对请求数据 ddd 通过刚生成的协议秘钥进行 对称加密 成密文如:kkk;
5)对 (xxx + kkk)通过服务端返回的加密算法 MD5,进行加密即:MD5(xxx + kkk) = ooo;
6)给服务端发送第二个http协议请求
4、服务端接收到客户端发送过来的三类数据后,进行三步操作:
1)通过MD5算法对 (xxx + kkk) 加密 看是否等于 ooo,等于则可证明数据未被篡改;
2)通过RSA算法生成的公私钥对中的私钥 对客户端发送过来的经过公钥加密后的协议秘钥进行解密
3)通过得到的协议秘钥 sss 对密文数据 kkk 进行解密为 ddd 。
图解: