1、概念
https全称Hyper Text Transfer Protocol over Secure Socket Layer,是在http的传输层加入了SSL对传输数据进行加密,可以做到防窃听、防伪装及防篡改。
2、http存在的问题
(1)容易被监听
http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的。
(2)被伪装
http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求www.taobao.com,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。
(3)被篡改
hacker中间篡改数据后,接收方并不知道数据已经被更改。比如,打开自己的网站经常会莫名其妙的弹出一些广告,这就是3大运营商干的。
3、https请求流程
(1)客户端向一个需要https访问的网站发起请求。
(2)服务器将证书发送给客户端进行校验。证书里面包含了其公钥。这里要特别说一下客户端到底 如何来校验对方发过来的数字证书是否有效。
A、首先在本地电脑寻找是否有这个服务器证书链上的ca机构的证书(中间证书具体的逐层验证的方式需要再了解?)。如果有继续下一步,如果没有弹出警告。
B、使用本地ca机构证书的公钥对服务器证书的指纹和指纹算法进行解密。
C、得到指纹算法之后,拿着这个指纹算法对服务器证书的摘要进行计算得到指纹。
D、将计算出的指纹和从服务器证书中解密出的指纹对比看是否一样如果一样则通过认证。
(3)校验成功之后,客户端会生成一个随机串然后使用服务器证书的公钥进行加密之后发送给服务器。
(4)服务器通过使用自己的私钥解密得到这个随机值。
(5)服务器从此开始使用这个随机值进行对称加密开始和客户端进行通信。
(6)客户端拿到值用对称加密方式 使用随机值进行解密。
4、加密方式
(1)共享密钥加密又称对称加密
共享密钥的加密密钥和解密密钥是相同的
(2)公开密钥加密又称非对称加密
加密算法是公开的,密钥是保密的。公开密钥分为私有密钥和公有密钥,公有密钥是公开的,任何人(客户端)都可以获取,客户端使用公有密钥加密数据,服务端用私有密钥解密数据。
(3)https为什么不一直使用非对称进行加密
非对称加密的消耗和所需的计算以及时间远比对称加密消耗要大,所以在握手和认证之后,服务器和客户端就开始按照约定的随机串,对后续的数据传输进行加密。
参考:
CA证书扫盲,https讲解
https://www.cnblogs.com/handsomeBoys/p/6556336.html
数字证书签发,授权等相关以及https建立通信过程