原因和解决方法
- https 其实就是在应用层(http) 和 传输层(tcp/udp) 之间加了一层 TLS/SSL
- 避免传输数据被中间人盗用、信息泄露
- 使用 CA 证书进行身份验证
- 数据内容挟持、篡改
- 非对象加密算法和对称加密算法对数据进行加密
- 避免传输数据被中间人盗用、信息泄露
原理
- https的工作原理大概是这样的:
- 建立握手(发起 SSL 连接
- 浏览器把自己支持的加密规则发送给网站
- 网站从这套加密规则里选出来一套加密算法(一般是非对称加密)和hash算法(一般是对象加密,比如MD5),然后把自己的身份信息用证书的方式发回给浏览器,证书里有网站地址、加密公钥、证书颁发机构
- 浏览器验证证书的合法性,然后浏览器地址栏上会出现一把小锁
- 浏览器接着生成一串随机数密码,然后用证书里的公钥进行非对称加密获得密码A;用约定好的hash算法生成握手消息的hash值B,然后用随机密码对握手消息进行对称加密(ps: 这里应该还是走 hash 算法),然后将密码A和加密后的握手消息和hash值B发送给网站
- 网站取得密码A,用本地的私钥对消息解密取出来原来的随机密码,然后解密出来的随机密码解密浏览器发来的握手消息,计算消息的hash值,并验证与浏览器发送过来的hash值是否一致,然后同样用约定好的 hash 算法生成一段握手消息的 hash 值,最后用相同的随机密码加密该握手消息,发给浏览器
- 浏览器解密握手消息,然后计算消息的hash值,如果跟网站发来的hash一样,握手就结束
- 通信
- 之后所有的数据都会由之前浏览器生成的随机密码,然后用对称加密来进行进行加密。
加密算法
- 常用的非对称加密是RSA算法
- 对称加密是AES、RC4等
- hash算法就是MD5