1

关于http请求,一直都不是很明白,这次决定系统的整理一下。
在这之前先先整理一下SSL/TLS的运行机制:
在网络通信中,有窃听风险、篡改风险、冒充风险,所以SSL/TLS的设计目的就是为了达到:加密传播、检验机制、配备身份证书。

三次握手的基本过程

在这实现的过程中,最常听到的就是3次握手,握手阶段的基本过程就是:
1.客户端向服务器索要并验证公钥;
2.双方协商生成“对话秘钥”;
3.双方采用“对话秘钥”进行加密通信;

他们的具体过程是:

1.客户端发出请求客户端向服务端发出一个ClientHello

他主要包括的信息有

  • 客户端支持协议的版本

  • 生成一个随机数,用于“对话秘钥”

  • 客户端支持加密的方法

  • 客户端支持压缩的方法

2.服务器回应(ServerHello)

他主要包括的信息有

  • 确认使用协议的版本,需要跟客户端一致。如果不一致,导致服务器关闭加密通道

  • 生成一个随机数,用于“对话秘钥”

  • 确认加密的方法(需要跟客户端一致)

  • 服务器证书(有可能会多一步,需要客户端提供“客户端证书”,像那些银行的token)

3.客户端回应

判断服务器证书,如果不是可信机关,或证书的域名和实际域名不一致,或者已经过期,则向访问者提出警告,选择是否继续通信;如果可靠,则从证书中取出服务器的公钥,然后向服务器发出信息,这些信息包括:

  • 一个随机数,用于服务器公钥加密,防止窃听

  • 编码通知,表示随后的信息都将用上方协定的加密方法和秘钥发送

  • 客户端握手结束通知,也把之前发送的所有内容的hash值,然后传递给服务器

4.服务器最后的回应

收到了客户端的三个随机数,pre-master key,会生成本次会话所用的“会话秘钥”,然后发送内容

  • 编码改变通知,表示随后的信息都将用来双方商定的加密方法和秘钥发送

  • 服务器握手结束通知,表示服务器的握手阶段已经结束,也发送前面内容所有内容的hash值,用于客户端的校验

握手结束,接下来是客户端和服务端进入加密通信,就完全使用普通的Http协议,只不过“会话密钥”加密内容(如果是http的话,没有密钥,这是http和https的区别)

为什么要有三个随机数,来生成“会话密钥”
因为SSL协议中的证书是静态的,必须引入一种随机数来保证密钥的随机性。pre master 不信任每个主机都能产生完全随机的随机数,但是三个随机数就可能接近每增加一个自由度,随机性也就会增加。

图片描述

请求中常用到的code
400: Bad Request
401 Unauthorized
402
403 Forbidden
404 Not found

500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP version not supported


jyren_Rachel
107 声望4 粉丝

下一篇 »
web网络安全