HTTPS网络编程——S代表SSL协议也叫TLS协议_ssl(secure socket layer protocol)协议

HTTPS默认使用TCP端口443(http默认端口号是80),也可以指定其他的TCP端口。

2.SSL协议介绍

HTTPS中S实际上是SSL(Secure Sockets Layer)协议。

SSL是Netscape公司发明的一种用于WEB的安全传输协议。随着时间的推移由于Netscape失去了市场份额,它将SSL的维护工作移交给因特网工程任务(IETF)。第一个后Netscape版本被重新命名为安全传输层协议(TLS),TLS(Transport Layer Security :RFC 2246)是基于SSL上研发的,但是与SSLv3.0有细微的差别。

因此,SSL协议有时也称为TLS协议。目前常用的是TLSv1.0的协议

2.1、SSL协议的功能

1、保证传输数据的保密性
2、保证传输数据的完整性 rc4
3、实现通信双方的互相身份认证—非对称加密

2.2、SSL协议在协议栈的位置

在这里插入图片描述

2.3、SSL协议组成

SSL协议是一个分层的协议,共有两层组成。

高层协议包括:
SSL握手协议(SSL HandshakeProtocol)、
改变加密约定协议(Change Cipher Spec Protocol)、
报警协议(AlertProtocol)
ChangeCipherSpce:改变加密约定协议

·处于SSL协议的底层的是:
.SSL记录层协议(SSL Record Protocol)
记录层协议实际上是一个简单的封装或者说是“打包”协议。记录可能是明文传送的,也可能是被加密传送的,

2.3.1、纪录协议的功能

1、保证消息的完整性
2、机密性

2.3.2、SSL记录协议的示意图

在这里插入图片描述
数据可能是加密的也可能是明文。在握手过程中除了最后一条finished的报文外,其他报文都是明文传输的。

填充:只有在使用分组加密才会有填充和填充长度两个字段。

MAC(Message Authentication Code)消息验证码
主要目的是认证消息、检验数据是否被篡改。
目前常用的消息摘要算法有MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm )。
SSL中的摘要算法是:HMAC即Keyed-Hash Message Authentication Code。
HMAC是在使用消息摘要函数(例如MD5等)的同时,增加了一个“密钥”作为输入。
消息验证码也称为消息摘要,是实现数据完整性的主要手段

2.3.3、SSL协议封装过程

在这里插入图片描述

2.3.4、SSL协议解封装过程

在这里插入图片描述

2.3.5、SSL握手协议

SSL握手协议是ssL协议中最重要同时也是最复杂的协议。

SSL握手协议主要负责如下工作:
算法协商
身份验证
确定密钥

SSL握手过程分为四种:

握手种类描述
Full Handshake全流程握手,C/S双方从无到有建立SSL连接;
Resumn sessionHandshakeC/S双方曾经建立过连接,但中途断了,SsL会话信息还有保留,只需要执行部分握手流程就可建立SSL连接;
ServerRe-negotationHandshake已经建立了SsL连接,但sever端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;
Client Re-negotiationHandshake已经建立SSL连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。

全流程握手详解

在这里插入图片描述

Client hello

在这里插入图片描述
Client hello:
客户端给服务器端发个hello的问候,问候里包含有它使用的SSL版本号、加密套件列表,压缩算法列表,客户端随机数,sessionid=0

服务器收到客户端的问候后,会从客户端提供的版本号中选出双方都支持的最高版本,从加密套件列表选择一种支持也安全性强的加密套件,从压缩算法列表选择压缩算法(一般为空)。

Server hello

在这里插入图片描述
Server hello:
服务器将上述选择的加密套件,压缩算法(NULL),且计算出的一个session_id和服务器随机数发送给客户端

客户端收到Server hello的报文会将加密套件,压缩算法(NULL),session_id和服务器随机数缓存起来。接着继续握手过程

Server Certificate

在这里插入图片描述
Server Certificate:
服务端将自己的证书发送给客户端,证明自己的身份。证书中包含服务器的身份信息,以及服务器的公钥

客户端收到Certificate报文会验证该证书是否过期,并将服务器的公钥缓存起来

Client Certificate Requst

在这里插入图片描述
Client Certificate Requst:

如果是SSI的双向认证的话,那么服务器端会向客户端发送client certrequest消息,索要客户端的证书,证书中包含有server端支持的证书类型,和所信任的所有证书发行机构(CA(Certificate Authority))列表。

客户端收到clint Certifitate Rlequst报文将消息中的证书类型列表和可信任证书发行机构列表保存下来,可在后面发送客户端证书时候拿来筛选证书用。

Server Hello done

在这里插入图片描述
服务器通知客户端这一步的握手消息发送完成。等待客户端确认。

Client Certificate

在这里插入图片描述
客户端从之前收到server端发的 certrequest消息中的支持的证书类型列表和信任的根CA(Certificate Authentcation)列表中选择满足条件的第一个证书发送给服务器。

服务端会缓存客户端的公钥

Client Key EXchange

在这里插入图片描述
若为RSA加密,客户端则产生48位随机数作为pre-master(预主密钥)并用服务端公钥加密后发出去。

服务器端缓存预主密钥

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值