http协议,超文本传输协议,用于客户端与服务端通信,http通常以明文的方式传递内容,发送的内容很容易被劫持,恶意篡改,因此http协议不能用于传输一些敏感信息,因此需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
https的实现原理
https的整体过程可以分为证书验证阶段,和数据传输阶段。https在加密过程中使用的是非对称加密,在数据传输的过程中使用的是对称加密。对称加密就是加密方式与解密方式相同。非对称加密刚好相反
证书验证阶段
1.在浏览器中输入URL地址,浏览器向服务器发送请求;
2.服务器收到浏览器的请求,从第三方机构获得认证证书;
3 服务器返回证书,证书中包含了公钥
4.由浏览器判断证书是否合法,如果不合法,给出提示告警信息,如果合法则生成随机数 ,进入到数据传输阶段;
数据传输阶段
5.通过获得的公钥对证书生成的随机数进行加密
6.服务端收到加密的随机数,用私钥进行解密,
7.服务器用传入的随机数对传输的数据进行加密
8.浏览器根据本地存储的随机数进行解密
其实https的加密过程大致的可以理解为,因为http传输的信息都是明文,所以客户端和服务器约定了一种密码,来对传输的信息进行加密,即,但是客户端和服务器约定的密码也有被截获的可能性,因此,这个密码通过第三方的托管,由第三方生成,再对密码进行加密,可以更大程度的保证安全,首先由服务器向第三方机构获取证书,证书可以生成随机数,即密码,然后用公钥对随机数加密,即对密码进行加密,然后用密码再对传输的内容进行加密解密,完成数据的安全传输
为什么数据传输要使用对称加密
首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;
另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。