HTTPS
http是不加密的通信协议,所有信息明文传输,风险有信息会被第三方盗取、篡改,甚至冒充身份进行通信。https实现了加密通信,并具有校验机制、配备身份证书。HTTPS和TCP之间会有一个SSL层,以上所有过程都在SSL层中完成,比正常的http传输多了SSL握手过程和加密解密过程,会有一定的性能损耗。
信息加密
- 对称加密
只有一个密钥,运算速度很快,但是不够安全。 - 非对称加密
两个密钥。公钥和私钥,公钥可以任意分发,私钥保密。但是速度慢。
加密通信过程
服务端申请或注册ca证书,拿到证书也就是公钥、私钥对;再将公钥传输给客户端;客户端验证公钥没问题之后,会生成一个随机数用公钥加密之后传给服务端;服务端用私钥将公钥解密,就拿到了客户端的私钥也就是对称加密的密钥,双方传输的时候都用该私钥对内容进行加密。
中间人攻击
服务端向客户端发公钥;中间人截获公钥,并发送一个自己伪造的公钥发给客户端;客户端接收到后,用此公钥将自己的私钥加密发给服务器;中间人截获用自己的私钥将其解密并伪造假的密钥发给服务器;服务器用私钥获取到假密钥;双方开始用假密钥互相通信。
避免中间人攻击的方法就是服务器在发送给客户端的公钥中加ca证书。
认证CA证书
签名的过程,对证书明文信息进行hash,hash后的结果用私钥加密。校验的时候拿到证书内的hash算法对明文进行加密,再用公钥对签名解密对比两个相同就是可信的。
- 证书颁发机构是否受客户端信任
- 是否被吊销
- 是否在有效期内
- 校验对方是否存在证书的私钥