https网络编程——HTTPS简介以及SSL协议详解

参考;HTTPS简介以及SSL协议详解
地址:https://qingmu.blog.csdn.net/article/details/108209248?spm=1001.2014.3001.5502

目录

  • 1.HTTPS简介
  • 2.SSL协议介绍
    • 2.1、SSL协议的功能
    • 2.2、SSL协议在协议栈的位置
    • 2.3、SSL协议组成
      • 2.3.1、纪录协议的功能
      • 2.3.2、SSL记录协议的示意图
      • 2.3.3、SSL协议封装过程
      • 2.3.4、SSL协议解封装过程
      • 2.3.5、SSL握手协议
    • 全流程握手详解
      • Client hello
      • Server hello
      • Server Certificate
      • Client Certificate Requst
      • Server Hello done
      • Client Certificate
      • Client Key EXchange
      • Certificate verify
      • Change Cipher Spec
      • Client finished Message
      • 加密套件列表

1.HTTPS简介

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer)是HTTP的安全版

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(预主密钥)并用服务端公钥加密后发出去。

服务器端缓存预主密钥

Certificate verify

在这里插入图片描述
Certificate verify这个消息中要包含一个签名,签名里头内容是从Client hello 开始到目前为止所有握手消息(不包括本消息)的摘要,然后客户端的私钥加密

由于之前的Client Certificate 消息中包含有客户端的公钥,因此用公钥解密该消息,验证客户端的真实性

Change Cipher Spec

在这里插入图片描述
Change Cipher Spec]该消息只有一个值为1的字节。不属于握手协议,和握手协议同一级别的改变加密约定协议。发送该消息的作用是为了告诉对方接下来的消息将采用新协商的加密套件和密钥进行通信。

在发送该消息的同时,客户端会把之前的客户端随机数,服务器端随机数、以及预主钥产生一个主密钥。并将主密钥进行密钥导出(服务器端的写MAC密钥、客户端写MAC密钥、服务器端的写密钥、客户端的写密钥),该过程只在本地进行,不发送给对方。

Client finished Message

在这里插入图片描述
Client finished Message:

这是客户端ssi协商成功结束的消息。也是第一个用协商好的密钥加密的消息。会把从client hello一直到现在的数据摘要,用客户端密钥加密,发送给服务器。确保握手过程的完整性和机密性。

加密套件列表

加密套件列表:
列表中包含了Client端支持的所有密钥套件。
一个密钥套件定义了一个密钥规格,其中描述如下内容:
密钥交换算法(非对称加密算法),
是否出口
对称加密算法
支持的最高对称密钥位数
MAC (Message Authentication Code)算法(或摘要算法)。

例sSl_RSA_WITH_R04_128_MD5= 0O04]非对称加密算法或密钥交换算法为RSA,采用高强度128位对称加密算法RCA,摘要或MAC算法为MD5,不支持出口/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

D3---01基础的柱状图制作(转)

---文章转自 http://d3.decembercafe.org/index.html ,Created by 十二月咖啡馆。 一个完整的柱形图包含三部分:矩形、文字、坐标轴。 首先要布置一个大小合适的 SVG 画布: 添加 SVG 画布 //画布大小 var width 400; var height 400;//在…

https网络编程——对称加密、非对称加密、单项加密的简单介绍

参考:对称加密、非对称加密、单项加密的简单介绍 地址:https://qingmu.blog.csdn.net/article/details/108213426?spm1001.2014.3001.5502 目录1、对称加密1.1、什么是对称加密?1.2、对称加密的优缺点是什么?1.3、常见的对称加密…

dnn中个性化服务的使用

1.什么是profiles(个性化服务)Profiles是系统面向用户提供的灵活性的个体信息的容器,一个用户的Profile可以使以下一种或多种的集合: (1) 简单的字符串或其他基础类型 (2) 一个序列化的实体 (3&…

洛谷P1073 Tarjan + 拓扑排序 // 构造分层图

https://www.luogu.org/problemnew/show/P1073 C国有 n n个大城市和 mm 条道路,每条道路连接这 nn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通…

https网络编程——SSL的加密和解密过程

参考:SSL的加密和解密过程 地址:https://qingmu.blog.csdn.net/article/details/108214105?spm1001.2014.3001.5502 目录现在的加密/解密技术主要有三种:对称加密,非对称加密,和单向加密加密解密的流程图现在的加密/解…

IIS网站的权限设置问题

2019独角兽企业重金招聘Python工程师标准>>> IIS中的权限与NTFS权限设置的区别: 当浏览器访问被IIS禁止的页面时,返回404错误页面 但浏览器访问被NTFS禁止的文件时,提示用户登录界面 转载于:https://my.oschina.net/changeme/blog…

关于.Net2.0下配置架构的使用

上次用到配置文件,就花了一些时间研究了一下.Net2.0下的配置文件架构,当时感觉确实很强大,完善,但看的有些头晕.迷迷糊糊把实现了要求,就没有再深入研究.最近,想在配置文件里实现一个复杂的配置,多层次嵌套的配置文件,再把.Net中的配置文档研究了一下,经过这两次的研…

煲仔

湖南的煲仔似乎在我毕业工作的那年侵占了大街小巷,满街的煲仔店向外热滋滋的喷着香味,便宜又好味。那几年在外的觅食,除了常德津市牛肉米饭外,煲仔似乎是我唯一的选择。将米放入煲内,加水在火上煮至半熟,再…

https网络编程——中继(负载均衡)工作原理

参考:中继(负载均衡)工作原理 地址:https://qingmu.blog.csdn.net/article/details/108217055?spm1001.2014.3001.5502 中继(负载均衡)工作原理 在我们当前社会,比如我们上某宝,某…

全套支付宝系统架构(内部架构图)【收藏】

据说这是对支付宝系统体系最全最强解析,推荐收藏学习! 转载于:https://www.cnblogs.com/SH-xuliang/p/10340745.html

iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager

2019独角兽企业重金招聘Python工程师标准>>> 1、在Documents里创建目录 创建一个叫test的目录,先找到Documents的目录, [cpp] view plain copy NSArray *paths NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); …

https网络编程——使用openssl库自建根证书

参考:如何自建根证书?使用openssl库自建根证书带图详解 地址:https://qingmu.blog.csdn.net/article/details/108217572?spm1001.2014.3001.5502 目录根证书的普通用途自建根证书步骤1、创建一个目录,存放所有证书有关资料2、进入…

angular接口传参

1、service文件 创建xxx.service.ts文件 import { Injectable, Inject } from angular/core;import { Observable } from rxjs;import { map } from rxjs/operators;import { HttpClient } from angular/common/http;Injectable({ providedIn: root})export class ErrorCond…

https网络编程——如何建立利用根证书(凭证)签发建立中继证书(凭证)详解

参考:如何建立利用根证书(凭证)签发建立中继证书(凭证)详解 地址:https://qingmu.blog.csdn.net/article/details/108221568?spm1001.2014.3001.5502 目录在建立中继之前需要自建根证书建立根证书的具体步…

NURBS曲线与曲面

B样条方法在表示与设计自由型曲线曲面形状时显示了强大的威力,然而在表示与设计初等曲线曲面时时却遇到了麻烦。因为B样条曲线包括其特例的Bezier曲线都不能精确表示出抛物线外的二次曲线,B样条曲面包括其特例的Bezier曲面都不能精确表示出抛物面外的二次…

https网络编程——如何利用中继证书(凭证)建立服务器证书

参考:如何利用中继证书(凭证)建立服务器证书 地址:https://qingmu.blog.csdn.net/article/details/108225569?spm1001.2014.3001.5502 目录建立服务器证书的前提是要建立中继证书建立服务器证书的具体步骤1、建立一个目录&#x…

上传图片

2019独角兽企业重金招聘Python工程师标准>>> private File imageFile;// 上传文件名称private String imageFileFileName;// 上传文件类型private String imageFileContextType; InputStream is new FileInputStream(imageFile);String suffixName imageFileFileN…

https网络编程——如何利用中继证书(凭证)建立客户端证书

参考:如何利用中继证书(凭证)建立客户端证书 地址:https://qingmu.blog.csdn.net/article/details/108226592?spm1001.2014.3001.5502 目录建立客户端证书的前提是要建立中继证书建立客户端证书的具体步骤1、建立一个目录&#x…

2019.2.4 nfs原理和安装实验

NFS 访问一个本地文件还是NFS共享文件对于客户端而言都是透明的,当文件打开的瞬间,内核会作出一个决定,如果是本地文件内核会将本地NFS共享文件内核会将NFS共享文件的所有引用传递给——》NFS客户端枢中 NFS客户端是通过TCP/IP协议及模块向NF…

形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...

斑马线和斑马什么关系?大家都知道斑马和斑马线,但是两者之间有什么关系?蚂蚁庄园12月10日提到了这个问题,我们一起来看看正确答案吧。问题:斑马线和斑马有什么关系?答案:横线酷似斑马纹答案解析…