什么是HTTP?
定义
HTTP是一种超文本传输协议,其目的就是为了规范超文本的传输格式,规范服务端与客户端的行为
HTTP 协议通信过程
- 服务器在80端口等待客户端的请求
- 浏览器向服务器发起一个TCP连接(创建套接字)
- 服务器接收来自浏览器的TCP连接
- 浏览器与服务器交换HTTP消息
- 关闭TCP连接
HTTPS
底层也是基于TCP连接的协议,只是通过了SSL/TLS协议用作加密和认证,增加了安全性
HTTPS --SSL/TLS加密
非对称加密
简而言之就是,存在两把钥匙,公匙与私匙,公匙每个通信的发送者都有,私匙则只有解密者拥有。公匙负责加密,私匙负责解密。
类似:一个邮局,有很多哦邮箱,每个邮箱相当于一个通信通道,每个邮箱上都有一把钥匙用来存放信件时上锁(公匙),只有邮局有一把钥匙可以打开信箱(私匙)。
对称加密
也就是发送者和解密者拥有相同的钥匙,加密的强度取决于钥匙秘密的强度
在大多数情况下,由于非对称加密代价较大,所以都采取对称加密
非对称加密的意义是?
可能会有这样一个疑问,大多数情况下都只使用对称加密,那非对称加密岂不是没有意义
but 回想一下,对称加密的秘密程度完全依靠于钥匙的秘密程度,那这样岂不是非常危险,而非对称加密就可以先加密对称加密,这样后续对称加密就足够安全。也就是说:在第一次进行建立通信连接时,首先使用非对称加密,将对称加密进行传递,后续就只使用对称加密。----使用极难破解的锁,去锁一把钥匙。
有小偷?
可能会想到这样一个情况:出现一个小偷A,在服务器向客户端发送公匙时,他自己传输一个假公匙AS给到客户端C,客户端也不知道啊,他就按照AS公匙进行加密,然后加密的信息服务器也不能解密,就只能让小偷A自己解密了,然后吧客户端发送的消息全偷了,谁也不知道;
数字签名:
CA,第三方机构(颁发证书):
服务端与客户端都信任CA,CA 是知道 S 公钥的,CA 向 S 颁发证书。并附上 CA 私钥对消息摘要的加密签名。
服务端得到这个证书以后,将他发给客户端
客户端信任CA,也知晓其公匙,使用 CA 公钥对 S 证书上的签名解密,同时对消息进行散列处理,得到摘要。比较摘要,验证 S 证书的真实性。
如果一样,那么传过来的S公匙是正确的