通俗来说:https = http + ssl;
下面主要阐述ssl
为什么有这玩意
加密数据、防止被中间人攻击
怎么发展得来
设客户端为A,服务端为B
- 对称加密
A和B用同一个密钥加密解密,但A和B需私下约定密钥,不然在网上传输被截取就没有意义。
- 非对称加密
A后来要和不同个B通信,不可能每个都私下约定一个密钥。
后来提出用一个公钥和一个私钥配合加密解密。
现在客户端和服务端都各有公钥密钥,下面分别用公钥A,公钥B,私钥A,私钥B代替。
步骤如下:
1.客户端->服务端:用公钥B加密数据,私钥A加密hash值
2.服务端收到:用私钥B解密数据,公钥A解密hash值验证完整性
但是还是会有问题,公钥还是网络上传输的,中间在A和B约定公钥的时候替换成自己的也凉了。
所以后面问题就要解怎么保证这个公钥的真实性
- 数字证书
设数字证书机构为C,C也用非对称加密
步骤:
1.B把公钥B(和一些其他信息)给C,C用私钥C加密,加密完的数据叫数字证书
2.A用C证书里面的公钥C来解密数字证书获得公钥B
这样就可以保证公钥的真实性
总结步骤
- A发请求
- B返回C认证的数字证书(包含公钥B)
- A用公钥C解密数字证书获得公钥B,用公钥B加密通信用的密钥
- B用私钥B解密获得通信用的密钥
- B和A就用这个通信用的密钥进行对称加密通信了