http 协议:http 协议是一种无状态,短链接的 通信协议,http 协议建立在 tcp 协议之上。
http 协议 分成 三个 部分 请求行,请求头,请求体
请求行: 就是访问的地址 ( 包含 ? 和后面的参数) 如: 127.0.0.1/server/add?id=1
请求头: http 的 header 部分,比如: centent-type=application/json
请求体: post 请求才有请求体,get 没有 , put 请求也有(强调幂等性),还有文件上传,数据文件也是放在 请求体里面的。
https: https 是 http 协议上面加了一个层 ssl 或者 tls 之类的安全机制。
https 请求的 大概过程:
客户端请求服务器 ——> 服务器返回 证书——>客户端验证证书的信息的合法性(域名是否一致,ca 机构是否 是公认的等...... )——> 客户端使用刚才下发的公钥加密自己秘钥和自己的公钥发送给服务器——>服务器端使用私钥解析得到客户端的秘钥,并且使用客户端的公钥加密 随机生成的 密钥 发送给客户端——>客户端 用自己的私钥解密 得到 服务器端密钥 ——> 后面双方使用 各自的秘钥通信
备注:后面用的 秘钥 是随机的对称加密的秘钥,而前面通信的用的 是证书的 公私玥 的非对称加密。
备注:上面的流程有问题,客户端生成 密钥以后,通过服务器端公钥加密数据发送给服务器端,这个时候请求的内容是 公钥加密的,只有具有私钥的服务端才能解开,这个过程是安全的。然后服务器端只要恢复客户端我收到了这个密钥,后面就可以使用密钥加密通讯了。
证书里面有什么
1 证书颁发机构id,
2 证书所有者域名或者ip
3 证书所有者公钥,
4 其他一下信息
5 证书颁发机构用自己私钥对上面信息做的签名
浏览器验签过程:
找到自己本地存的证书颁发者机构id对应的公钥,然后用它解密签名,在和证书信息摘要做对比,相同通过,不同或者找不到本地公钥就提示证书问题
ssl 和 tls : tls 是 基于 ssl 3.0 的,可以说 tls 就是 ssl 3.0 以后的版本。