#协议
- 为实现网络数据交换而建立的规则、约定或标准就称为网络协议
- 通信双方为了实现通信而设计的约定或通话规则。
- 网络中的计算机要能够互相顺利的通信,就必须讲同样的语言,协议就相当于语言
##TCP/IP协议,应用层协议
##http协议,传输层协议,端口80
##https协议,端口443
- https = http + SSL / TLS ,在HTTP上又加了一层处理加密信息的模块
- 服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
- 流程
- 证书,其实就是一对公钥和私钥
- CA 数字证书,CA是Certificate Authority的缩写,也叫“证书授权中心”。 + CA 认证分为三类:DV ( domain validation),OV ( organization validation),EV ( extended validation),证书申请难度从前往后递增,貌似 EV 这种不仅仅是有钱就可以申请的。
- 流程
- 客户端访问服务端,服务端返回证书(公钥)
- 客户端验证证书,使用公钥+生成随机值(对称加密值)生成加密内容返回服务端
- 服务端通过私钥解密内容,获取客户端的随机值,用这个值对称加密解密
- 双向认证
- 客户端访问服务端,服务端返回证书
- 客户端获取证书并验证
- 客户端发送自己的证书到服务端,服务端验证客户端证书
- 客户端用服务端的公钥+随机码生成通话密钥发送给服务端
- 服务端用私钥获取通话密钥,对称加密通信
- SSL防止的是中间人攻击跟网络监听
##SSL(Secure Sockets Layer) / TLS,
- 服务主要有
- 认证用户和服务器,确保数据发送到正确的客户机和服务器;
- 加密数据以防止数据中途被窃取;
- 维护数据的完整性,确保数据在传输过程中不被改变
##FTP协议
SOAP协议
- 是交换数据的一种协议规范
- 基于XML(标准通用标记语言下的一个子集)的协议
- 被设计成在WEB上交换结构化的和固化的信息
##公钥私钥体制
- 公钥加密,私钥解密
- 私钥签名,公钥验证
- A消息生成摘要
- A用私钥加密摘要得到签名
- A发送内容+签名
- B接受内容,用公钥解密获取签名,用相同的方式计算摘要比较
- 算法
- RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。
- 数字证书 = (申请人公钥 + 申请人信息 + 证书信息) && ca 私钥加密
- 证明这公钥是属于申请人的
- 流程
- A消息生成摘要,私钥加密得到签名 + 证书 发送
- B接收消息,和证书
- 证书通过ca 公钥解密获取A的公钥
- 解密签名,获取摘要,相同方式计算摘要比较
- 场景
- 传统CS授权模型,客户端使用资格证书请求受限服务器资源。
- 为了给第三方应用提供访问受限资源,需要共享资格证书给第三方,问题是:
- 第三方引用需要保存资格证书,如一个明文的密码
- 服务端需要支持密码验证,尽管密码验证方式很不安全
- 第三方任意访问资源,服务方对于资源限制访问缺乏能力
- 资源所有者不能撤销对单个第三方的访问,只能改密码
- 所有的资源控制就依赖于一个密码
- OAuth
- 引入授权认证层,把client的角色从资源所有者分离
- 客户端获取一个access Token,一个字符串表示:特定的范围,周期等访问属性
- 客户端使用access Token 访问受限的服务资源。
- roles
- resources ownwer,资源所有者,有能力授权访问受限制的资源
- resource server,托管资源的服务器,接受并响应使用访问令牌响应受保护的资源请求
- client,需要访问受限资源的应用
- authorization server,服务器在成功后向客户端发出访问令牌,验证资源所有者并获得授权
- 授权server 可以和 resource server 在同一机器,也可以对应多个resource server
- 流程
- 客户端 --> resource owner ,请求授权
- resource owner --> 客户端, 返回授权批准
- 客户端 --> authorization server ,使用授权批准请求access token
- authorization server --> 客户端,验证授权批准,产生一个access token返回
- 客户端 --> resource server, 使用access token 请求
- resource server --> 验证token,响应请求
- Authorization Grant(授权批准),4中类型
- Authorization Code,授权码
- implicit
- 密码证书
- 客户端证书