简介
SSL Pinning,即HTTPS的证书校验
作用
具体解释要从HTTPS的诞生说起了
HTTP是明文传输的协议,在C/S不自行做加密处理的情况下,所有数据都是以明文形式在网络中传输的。
而在目前的庞大互联网中,大多数情况下从Client到Server要经过十几级网关转发。
而这中间,小到自己家的路由器、大到运营商的区域转发都是可以任意查看通信数据甚至篡改通信数据的。
这就是中间人攻击。
为了防止中间人攻击,产生了HTTPS,即在HTTP基础之上附加SSL来保护安全
简单来说,各个具备HTTPS的网站会将自己的公钥公开,客户端访问时用服务器的公钥加密一个密钥,再将密文交还给服务器,服务器用私钥解密后就得到了该密钥。接下来通信皆使用这个对称密钥,从而保证了通信安全
然而这一切都建立在公钥可信,即客户端拿到的“服务器公钥”真的是目标服务器的。如果中间人同样交给客户端一个公钥,再申请目标服务器的公钥,作为一个中间方分别跟Client和Server建立一个HTTPS连接,那么这个加密就毫无意义了。
因此提出了证书,这一项保证公钥的可信的内容。
证书由CA机构颁发,由CA机构的可信担保。换句话说,人们决定无条件相信所有公钥,不如自己选择一些较大的、公开的机构来担保、鉴别。
同样的,当用户信任的CA出现了问题,例如收受贿赂向意图不轨的终端颁发证书时,用户也将毫无安全可言。
理想状态下,恶意中间人没有CA机构颁发的证书,它发出的服务器公钥就不会得到客户端的承认,进而阻止了恶意链接和信息泄露。
有时用户为了得到一些本来不便拿到的中间数据