抖音客户端一面

C++ | 字节抖音客户端一面

Http握手过程

1. 客户端问候(Client Hello)

客户端向服务器发送一个“问候”消息,其中包含客户端支持的SSL/TLS版本、加密算法、压缩方法以及一个随机数。

  • version 版本号,https也有版本号哦TLS 1.0、TLS 1.1、TLS 1.2等等

  • random 随机数,用来以后计算对称加密key

    最后加密数据用的主密钥,需要客户端和服务端一起协商出来。后面服务端的 Server Hello 阶段也会生成一个随机数。一同用来计算出主密钥。

  • Session ID 保存会话的标识

    这个 Session ID 是可以重用的,具体看服务端资源和支持情况。如果要复用 Session ID, SSL 服务端需要维护连接的状态和上次握手成功留下的加密信息。如果是第一次访问该网址,会话 ID 尚未创建,客户端没记录,为 0。如果客户端保存了 Session ID 的信息,下次发起 SSL 请求的时候会带上。

  • Cipher Suites 说明客户端支持的加密方式,如上说明支持16种加密方式。

    客户端可以支持的密码套件列表。这些套件会根据优先级排序。每一个套件代表一个密钥规格。以 “TLS” 开头,接着是密钥交换算法,然后用 “WITH” 连接加密算法和认证算法。一个加密套件有这么几个内容:密钥交换算法、加密算法(会带有支持的最高密钥位数)、认证算法还有加密方式。最终使用什么密码套件是服务端决定的。要什么密码套件会在 Server Hello 中进行反馈。

  • 压缩算法

    这里为 0,说明不支持压缩算法

在这里插入图片描述

2. 服务器问候(Server Hello)

服务器响应客户端的“问候”消息,选择一个双方都支持的SSL/TLS版本、加密算法和压缩方法,并生成一个随机数,同时将其发送给客户端。

  • random 随机数

    和客户端的随机数两个随机数将参与主密钥(master key)的创建。

  • 压缩方法

    这里为 0,表示不使用压缩算法

在这里插入图片描述

3. 服务器证书(Server Certificate)

服务器将自己的数字证书发送给客户端。这个证书由受信任的第三方(如CA机构)签发,包含服务器的公钥和服务器身份信息。客户端使用内置的根证书列表来验证服务器证书的合法性和有效性。

  • 版本

    对应的就是 X.509 V3 标准

  • 序列号

    serialNumber,证书颁发者唯一序列号。

  • 签名算法ID

    这里指的是使用 SHA-256 进行摘要,RSA 进行加密的签名算法。

  • 证书颁发者

    issuer,就是颁发该证书的 CA 的信息。里面携带后该 CA 的唯一名称(DN,Distinguished Name),比如国家为 US(美国),组织机构为 DigiCert Inc.,名称为 GeoTrust CN RSA CA G1。后面我们需要从证书链找到该 CA 证书(具体方法:在其他证书的subject字段查找国家、组织机构、名称),去认证当前证书

  • 有效期

    validity,证书的起始时间和终止时间

  • 对象公钥信息

    subjectPublicKeyInfo。因为这是服务端证书,这个公钥后面将用于主密钥的交换过程,从中可以了解到这个公钥采用 RSA 加密

然后是证书颁发机构的签名信息:

  • 签名算法

    algorithmIdentifierÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值