简单回答
三次握手过程:
- 发送端首先发送一个带 SYN 标志的数据包给对方
- 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息
- 最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束
握手过程使用了TCP的标记: SYN(synchronize) 和 ACK(acknowledgement)
三次握手的目的是了解双方的发送能力和接收能力正常,准确无误地将数据送达目标处
追问:HTTPS的SSL层怎么实现加密?
HTTP + SSL(加密 + 证书认证 + 完整性保护) = https
一. 加密方式:混合加密
1. 交换密钥阶段: 公开密钥加密(非对称密钥加密)
2. 交换报文阶段: 共享密钥加密(对称密钥加密)
二. 证书:证明公开密钥正确性
1. 服务器把自己的公钥登录至CA
2. CA用自己的私钥向服务器的公钥署数字签名并颁发公钥证书
3. 客户端拿到服务器的公钥证书后,使用CA的公钥验证证书的签名
4. 使用服务器的公钥对报文加密后发送
5. 服务器用私钥对报文解密
CA:数字证书认证机构
CA的公钥已事先植入到浏览器里了
三. 完整性保护
在HTTPS通讯中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。
追问:我们常用的代理工具是怎么抓https请求?
- 截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求
- 接受真实服务器响应,用代理自己的证书伪装服务端向真实客户端发送数据内容
- 一般情况下HTTPS中是客户端对服务端做证书校验(所以抓包时候,需要客户端安装代理服务器的证书,并信任)
代理主要是有能力完成TLS/SSL握手;可以提供一个根证书;自动根据根证书生成一个签名的服务器证书
追问:HTTPS加密是非对称加密吗?非对称和对称的效率差别知道吗?
- 混合加密,用非对称加密交换密钥,然后对称加密地进行交换报文。
- 非对称加密会比对称加密慢千倍。这是因为对称加密主要的运算是位运算,速度非常快;非对称加密计算一般都比较复杂,比如 RSA,它里面涉及到大数乘法、大数模等等运算
文档参考:图书《图解HTTP》