HTTPS 建立连接过程

本文详细描述了HTTPS协议如何通过TLS/SSL协议实现安全连接,包括散列函数、加密算法的应用,以及client_hello和server_hello过程中客户端和服务端的身份验证、密钥协商和证书校验流程。
摘要由CSDN通过智能技术生成

eeba9d2d44a10de355abf8171a2b57ba.png

HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。

HTTPS完整建立连接过程,如下图

51b110669a266f097fe3c50fb0bb53b3.png

1.首先建立tcp握手连接2.进行ssl协议的握手密钥交换(Handshake protocal)3.然后通过共同约定的密钥开始通信

SSL 密钥协商的过程如下:

(一)、client_hello 过程

客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下:

1.版本信息: 支持的最高TSL协议版本version,从低到高依次 SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,当前基本不再使用低于 TLSv1 的版本2.加密套件候选列表(cipher suite): 认证算法 Au (身份验证)、密钥交换算法 KeyExchange(密钥协商)、对称加密算法 Enc (信息加密)和信息摘要 Mac(完整性校验);3.压缩算法候选列表:支持的压缩算法 compression methods 列表,用于后续的信息压缩传输;4.随机数:随机数就是上图里的RNc,用于后续生成协商密钥;5.协商数据:支持协议与算法的相关参数以及其它辅助信息等,常见的 SNI 就属于扩展字段,后续单独讨论该字段作用。

(二)、server_hello 过程

1.服务端返回协商的信息结果,包括选择使用的协议版本version,选择的加密套件 cipher suite,选择的压缩算法 compression method、随机数 RNs等,其中随机数用于后续的密钥协商;2.服务器证书链,用于身份校验和密钥交换3.通知客户端server-hello结束,请求客户端的证书和密钥

(三)、证书校验,协商最后通信密钥

客户端验证服务端证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下:

1.证书链的可信性 trusted certificate path2.证书是否吊销 revocation3.有效期 expiry date,证书是否在有效时间范围;4.a. 域名 domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析; b. 客户端发送客户端证书,公钥服务端验证(过程同客户端验证) c. 客户端hash所有之前的消息,发送hash值和摘要,用客户端的私钥加密发送给服务端,服务端用客户端的公钥解密,验证了服务端获取的客户端的公钥和算法是正确的 d. 客户端生成pms,用服务端的公钥加密后发送给服务端 e. 客户端和服务端同时计算出最终会话密钥(MS)

(四)、 验证协商密钥

1.Client发送ChangeCipherSpec,指示Server从现在开始发送的消息都是加密过的2.Client发送Finishd,包含了前面所有握手消息的hash,可以让server验证握手过程是否被第三方篡改3.服务端发送ChangeCipherSpec,指示Client从现在开始发送的消息都是加密过的4.Server发送Finishd,包含了前面所有握手消息的hash,可以让client验证握手过程是否被第三方篡改,并且证明自己是Certificate密钥的拥有者,即证明自己的身份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值