http是明文的,相当于在网上裸奔,引出了https,大多数网站都转为了https,连非法的赌博网站有的都是https的。
1.https的网站是不是必须让用户装数字证书?
答:分两种,一种是单向认证,像访问普通网站比如百度(https),百度网站上安装有网站证书(私钥),用户端的计算机预装有根证书(公钥),也就是签发那个百度网站证书的上级CA的证书,用来验证网站证书,这是单向认证。另一种是双向认证,客户端要验证服务器的证书,反过来服务器也要验证客户端的证书,像访问网上银行比如工行企业网银(https),网站上有证书,用户端的计算机预装有(签发网站证书的CA的)证书,此外,用户持有的U盾帮助提供用户端证书,这是双向认证。
token 是客户端账户密码登录后,服务器会根据用户信息加密生成的token,不用每次传递用户名和密码,区分客户,每次请求要携带token,服务器会检测,保证信息安全。
2.为什么在电脑/手机上信任抓包软件的证书就可以抓取HTTPS请求?
抓包程序将服务器返回的证书截获 ,然后给客户端返回一个它自己的证书;现在的抓包工具findler,wireshark都支持创建证书。
所以看到明文的原因,主要就是如下过程:
抓包工具伪装作为客户端和服务端交互,交互用的是【服务端的证书】,相互知道明文
自己的https请求被抓包工具(伪装成服务器)截获,交互用的是【findler生成的证书】,相互知道明文。
简单的的说 就是中间人无法伪造出一个可信的证书(橡皮印章是由权威机构颁发的),他拿不到也伪造不了,因为权威ca之所以是权威,就是他不能滥发证书,如果他滥发会被操作系统和浏览器群殴(我朝衙门有前科哦)。然后所有的电脑和浏览器都内置了这些权威机构的清单,所以中间人拿不到和你访问的域名绑定的证书。这时候中间人介入后,他只能自己造一个证书。但是你浏览器或者其他客户端会发现证书的不可信是伪造的,就阻断并警告你。就是下面图中的这个
但是,你导入了并信任他的证书,那么电脑肯定听的你的,毕竟你是电脑的主人你说了算。(如果你的电脑中毒了,自动导入了证书,那么你连弹框警告都没有,无感了)浏览器或者其他客户端也就不会去阻断这个被中间人介入的https连接。所以抓包软件就能介入做这个中间人。
流程图:客户端下载公钥证书,对对称秘钥进行非对称加密,这样只有服务器私钥可以解析出来,然后双方再进行对内容的对称加密,这样做的原因是对称加密比非对称加密的效率高,两种加密一起使用既解决了效率问题,安全性也变的更高。
下图左边是ca数字签名的过程,右边是客户端验证ca证书的过程。