HTTPS网络编程——S代表SSL协议也叫TLS协议

2023-11-17

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

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 sessionHandshake C/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,不支持出口/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTPS网络编程——S代表SSL协议也叫TLS协议 的相关文章

随机推荐

  • 【编译原理】LR(1)分析方法(c++实现)

    前文回顾 编译原理 LR 0 分析方法 c 实现 编译原理 SLR 1 分析方法 c 实现 算法 来自龙书第二版 代码 和SLR的区别其实只是DFA中多了一个搜索符 构建分析表的时候规约项的列是相应的搜索符而已 代码基本上就在SLR的代码上
  • 拼多多anti_content算法

    最近拼多多的anti content算法更新了 闲着无聊就看了看 总思路如下 首先我们抓包 看到我们今天的目标 anti content 现在 我们通过堆栈入口随便下个断点 然后我们在CallStack中向下寻找 经过漫长的寻找 我们可以在
  • route命令的详细使用介绍

    1 命令格式 route f p Command Destination mask Netmask Gateway metric Metric if Interface 2 命令功能 Route命令是用于操作基于内核ip路由表 它的主要作用
  • es单机数据迁移到另一个es单机

    将一个Elasticsearch单机的数据迁移到另一个Elasticsearch单机主要可以分为两步 第一步 备份原有数据 将原有Elasticsearch单机中的数据备份到一个文件中 可以使用 Elasticsearch 提供的 snap
  • 第三十讲:神州路由器路由重分发配置

    RIP和OSPF协议是目前应用最广泛的路由协议 两种协议交接的场合也很多见 两种协议的重分布是比较常见的配置 主校区原来所采用的网络协议为OSPF 而分校区采用的路由协议是RIP 采用RIP和OSPF重分发技术可以解决此问题 实验拓扑图如下
  • PostgreSQL、Greenplum 日常监控 和 维护任务

    背景 Greenplum的日常监控点 评判标准 日常维护任务 展示图层 由于一台主机可能跑多个实例 建议分层展示 另外 即使是ON ECS虚拟机 一个虚拟机一个实例一对一的形态 的产品形态 实际上也建议分层展示 以示通用性 主机级图层 1
  • vue项目全局内引入外部CDN地址的js文件

    通过vue cli 构建的vue项目的根目录下 有一个index html文件 例如
  • 跳过selenium检测爬取淘宝直通车

    最近 有对阿里商家端进行一些数据爬取 这次爬取的是直通车人群溢价数据 发现对selenium的检测相当厉害 然而我的回答是 你强任你强 清风拂山岗 咱人工登录怕过谁 什么cokies user agent selenium检测 token
  • Android构建问题解决方案

    1 问题一 解决方法 在app下的build gradle中加上 packagingOptions exclude META INF DEPENDENCIES exclude META INF NOTICE exclude META INF
  • 怎么计算union和struct中字节数计算

    首先我的运行结果都是在64位系统的Xcode中运行的 然后 这个只是由于对于标准的位移量方法看得头疼 自己总结出来的 如果有错误或者不明欢迎留言 字节 一般成8位为一个字节 在Xcode中sizeof int 等于4 在这里也就采用int占
  • fastjson(七)处理超大对象和超大JSON文本

    当需要处理超大JSON文本时 需要Stream API 在fastjson 1 1 32版本中开始提供Stream API 来看一下示例代码 示例对象 package json fastjson StreamApi import java
  • java金额的正则表达式,【转】关于金额应验的Java方法(采用正则表达式)

    public static boolean isNumber String str java util regex Pattern pattern java util regex Pattern compile 0 9 java util
  • 2016阿里云121款产品和解决方案全向图(9月制)

    2016阿里云121款产品和解决方案全向图 9月制 摘要 云栖社区在9月底又更新了 2016阿里云产品全向图和解决方案全向图 导语 DT时代 一切都将走向数据化 可视化 在阿里云所阐述的 技术拓展商业的边界 商业驱动技术的变革 理念中 密集
  • 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考 http blog sina com cn s blog 171daf8e00102xclx html 汇编语言实验答案 王爽 https wenku baidu com view a1cd7c6c1fb91a37f111f18583
  • muduo网络库学习笔记(13):TcpConnection生命期的管理

    本篇通过分析muduo中TcpConnection对断开连接事件的处理 来学习muduo网络库对TcpConnection生命期的管理 TcpConnection对连接断开事件的处理 首先 我们来看一下TcpConnection处理连接断开
  • 华为OD题目: 整理扑克牌

    package com darling boot order od od12 import java util 整理扑克牌 题目描述 给定一组数字 表示扑克牌的牌面数字 忽略扑克牌的花色 请按如下规则对这一组扑克牌进行整理 步骤1 对扑克牌
  • 关于Bert被质疑利用“虚假统计性提示”的ACL论文

    曾经狂扫11项记录的谷歌NLP模型BERT 近日遭到了网友的质疑 该模型在一些基准测试中的成功仅仅是因为利用了数据集中的虚假统计线索 如若不然 还没有随机的结果好 这项研究已经在Reddit得到了广泛的讨论 引用自 新智元 真的不想那么标题
  • 社会中的学费

    上学期间 我们交学费是为了学习课本知识 我们也确实从中学到了很多有用的东西 这些学费我们觉得是物有所值的 当我们踏入社会的时候 我们也是要向社会交一定的学费 这种学费 我们能够学到的东西就是社会经验 这是东西是无形的 我们总会觉得自己的钱没
  • ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not foun

    复现代码过程中 无意间出现这个问题 本以为很好解决 没想到还是花了我好几个小时的时间 总结一下趴 我的环境是cuda11 3 python3 9 pytoch1 10 问题如图 图1 bug示意图 在网上找了很多答案 要么就是没说清的 要么
  • HTTPS网络编程——S代表SSL协议也叫TLS协议

    参考 HTTPS简介以及SSL协议详解 地址 https qingmu blog csdn net article details 108209248 spm 1001 2014 3001 5502 目录 1 HTTPS简介 2 SSL协议