大白话https原理
疑问:为什么http协议在传输过程中不安全?
因为浏览器的请求有可能被第三方拦截,假如你请求中有账号密码就会被他人获取,也许你会说前端可以对账号密码加密就不怕了,那你想想就算你加密了,他人还不是可以利用你加密好的账号密码进行和服务器通信
疑问:为什么https协议可以保证传输安全?
说到https,这里得先说说https是什么。
https其实也是http协议,只不过是他的端口是443,且具有非对称加密的功能
非对称加密简单说就是一对公钥与私钥,公钥对其加密只有对应的私钥才能解密,对应的私钥加密只有对应的公钥才能解密。
知道了https的不同,那到底怎么解决传输安全的呢?
调用流程:
用户浏览器打开http://baidu.com,会从服务器获取该CA证书(CA证书是从专业机构购买的)获取公钥并返回浏览器
浏览器请求服务器时会使用公钥对请求数据经行加密
服务器收到请求就使用私钥对请求数据经行解密,获取数据经行接口处理
这里试想下,如果https请求被他人拦截获取,他人没有私钥对传输数据进行解密,这样就不能获取传输数据,并对数据经行篡改,所以他人就算拦截到请求也没用,保证了传输安全。
说说https的优点与缺点
优点:
能保证传输安全
浏览器以先索引https页面,利于SEO排名
缺点:
相比http,每次传输增加了加密解密的成本
CA证书需要购买(当然你也可以自己生成利用jdk的toolkey工具自己生成CA证书,但浏览器不认)