首页 程序笔记 HTTPS加密传输过程

HTTPS加密传输过程

HTTPS加密传输过程

HTTPS全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPSHTTP的基础下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL

知识储备

HTTP

HTTP是应用层协议,默认运行在80端口,是一种不安全的传输协议,经其传输的数据都是未加密的明文数据,可以被中间人攻击,获取到你的网络传输数据,这也就是尽量不要使用公共场所WIFI的原因。

HTTPS

HTTPS是应用层协议,默认运行在443端口,是一种安全的传输协议,通过在HTTP层与运输层的TCP直接加入一个加密/身份验证层来保证安全传输。

SSL

SSL安全套接层Secure Sockets Layer,位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:
SSL记录协议SSL Record Protocol:它建立在可靠的传输协议如TCP之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议SSL Handshake Protocol:它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

TLS

TLS传输层安全性协议Transport Layer Security用于在两个通信应用程序之间提供保密性和数据完整性,其由TLS记录协议和TLS握手协议组成。TLS1.0即为SSL3.0的标准化版本,SSL最初由网景Netscape提出研发,在SSL3.0时由国际互联网工程任务组IETF进行了标准化并添加了少量机制,并更名为TLS1.0

对称加密

简单来说对称加密的加密密钥和解密密钥是相同的,对称加密的效率要比非对称加密高。

非对称加密

简单来说非对称加密的加密密钥与解密密钥是不同的,需要一把公钥与一把私钥,私钥不能被其他任何人知道,公钥则可以随意公开。公钥加密,私钥解密;私钥数字签名,公钥验证。

CA

由于公钥是放在服务器的,在建立连接的过程中将公钥传输到用户,但是如何避免中间人攻击,即在传输公钥的过程中避免劫持,于是引入第三方认证权威机构CA,大多数操作系统的CA证书是默认安装的,CA也拥有一个公钥和私钥。任何人都可以得到CA的证书,其包含公钥,用以验证它所签发的证书。CA为服务申请者颁发证书,在CA判明申请者的身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关CA签发的对用户的公钥的认证。

传输过程

  1. 首先TCP三次握手建立链接,这是数据传输基础,在此之上开始SSL
  2. 客户端首先发送Client Hello开始SSL通信,报文中包含客户端支持的SSL版本、随机值Random1、加密算法以及密钥长度等。
  3. 服务器发送Server Hello,和客户端一样,在报文中包含SSL版本、随机值Random2以及加密组件,此后服务端将证书也发送到客户端。
  4. 此时客户端需要对服务端发送的证书进行验证,通过操作系统内置的CA证书,将服务器发送的证书的数字签名进行解密,并将证书的公钥进行相同算法的HASH与解密的数字签名解密的内容进行对比,验证证书是否合法有效,是否被劫持更换。
  5. 客户端验证证书合法,然后生成一个随机值Random3,用公钥对Random3进行加密,生成Pre-Master Key,客户端以Client Key Exchange报文将Pre-Master Key发送到服务端,此后发送Change Cipher Spec报文表示此后数据传输进行加密传输。
  6. 服务端将Pre-Master Key用自己的私钥解密为Random3,服务端发送Change Cipher Spec报文表示此后数据传输进行加密传输。
  7. 此时客户端与服务端都拥有三个随机字符串,且Random3是密文传输的,是安全状态的,此时则可以使用这三个字符串进行对称加密传输。由于非对称加密慢,不能每次传输数据都进行非对称加密,所以使用非对称加密将密钥协商好然后使用对称加密进行数据传输。
  8. 此时便正常进行HTTP数据传输,但是由于SSL加密的作用,此时的HTTP传输便是安全的,此为HTTPS的传输过程,其中2356也被称为SSL四次握手。

每日一题

Copy
https://github.com/WindrunnerMax/EveryDay

参考

Copy
https://www.cnblogs.com/yangtianle/p/11202574.html
https://www.cnblogs.com/liyulong1982/p/6106132.html
https://blog.csdn.net/lyztyycode/article/details/81259284
https://blog.csdn.net/lihuang319/article/details/79970774
https://blog.csdn.net/qq_32998153/article/details/80022489
2

站心网

HTTPS加密传输过程HTTPS全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP..

为您推荐

MVC跨域问题 Response for preflight has invalid HTTP status code 405

公司项目H5调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口。Content-Type设置为application/json,JS代码如下:$.ajax({type:"PUT",url:"http://172.1..

IIS中.NET Core报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies

在IIS部署.NET Core网站报错HTTP Error 500.31 - ANCM Failed to Find Native Dependencies。原因是需要安装.NET Core运行时和ASP.NET Hosting。1 安装.NET Core运行时,目前最新的是ASP.NET Core 运行时 6.0.10(可..

System.InvalidOperationException:“Unable to configure HTTPS endpoint.异常处理

.NET Core网站按F5运行时,在Program.cs里运行到app.Run()的时候报错:System.InvalidOperationException:“Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer ..

IIS配置HTTP 301重定向到HTTPS实测有效

百度站长平台目前已经建议网站使用HTTPS了。百度搜索的原话是这样的,从网站安全和用户体验上来讲,HTTPS站点更为安全优质,而百度搜索在索引的时候会考虑优先展现用户体验较好的页面;预计在2018年下半年,HTTPS将..

你如何设计一个可扩展的.NET应用程序架构?请描述你在这方面的思考过程和实践经验。

设计可扩展的.NET应用程序架构是为了满足应用程序在需求增长和负载增加时的可扩展性和性能要求。下面是我在这方面的思考过程和实践经验:需求分析:首先,我会进行需求分析,了解应用程序的功能需求和预期的负载。这..

什么是HTTP/3

HTTP/3 是超文本传输协议 (HTTP) 的下一个主要版本。它将提高速度、安全性和可靠性。HTTP/3 的关键改进包括:使用 QUIC 协议:QUIC 协议是基于 UDP 协议的传输层协议,具有更高的效率和可靠性。使用 HTTP/2 的多路复..

使用 Nginx 安装 Vaultwarden 密码管理器并让我们加密

随着在线攻击和网络犯罪的增加,迫切需要为不同的在线服务和帐户安全地生成、存储和管理极其复杂的密码。您可以注册并在几秒钟内开始使用数十种 SaaS 解决方案。对于像我这样的一些用户来说,首选使用自托管应用程序..

C#控制台程序如何创建HTTP Rest API

前言本文是关于如何创建Rest API C#控制台应用程序的,在此之前,我们必须知道什么是RESTful api。RESTful API是一种应用程序接口(API),它使用HTTP方法请求GET、PUT、POST和DELETE数据。RESTful API(也称为RESTf..

使用 DNSCrypt 安装和配置加密 DNS 服务器

DNS是域名解析的缩写。它用于将 IP 地址解析为域名,反之亦然。这有助于消除记住各种互联网站点的特定 IP 地址的复杂性,因此,人们可以使用域名访问页面,例如 google.com、computingforgeeks.com 等。设置 DNS 有..

离开页面时100%的发送HTTP请求

当浏览器内多页面发生跳转时,无法保证当前页面进程内的请求能够顺利完成,大多数情况下,这些请求会被浏览器 cancled,此时请求还未到达后端服务器。这些请求的可靠性可能取决于以下几点:网络连接速度、应用程序性..

.NET8站点报错:HTTP Error 500.31 - Failed to load ASP.NET Core runtime

在IIS部署.NET8网站时报错:HTTP Error 500.31 - Failed to load ASP.NET Core runtime。服务器上已经安装了.NET8 X64运行时,如何解决?HTTP Error 500.31 - Failed to load ASP.NET Core runtimeCommon solutions ..

SSL 连接过程详解

1、SSL 简介SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层与应用层之间对网络连接进..

数据库存储过程的缺点

数据库存储过程的使用在许多情况下非常有益,但也有一些缺点需要考虑:复杂性和学习曲线:编写和维护存储过程可能需要相当高的技能水平,特别是对于复杂的业务逻辑和大型数据库系统。对于新手来说,可能需要一些时间..

为什么不推荐使用存储过程?

不推荐使用存储过程的原因主要有以下几点:可移植性差:存储过程通常与特定的数据库平台相关联,可移植性较差。如果需要将应用程序部署到其他数据库平台,那么需要重新编写存储过程。复杂性:存储过程可以包含复杂的..

新项目有必要用存储过程有吗?

新项目是否有必要使用存储过程,主要取决于以下几个因素:项目需求:如果项目有比较复杂的数据库操作需求,那么使用存储过程会更合适。项目规模:如果项目规模比较大,那么使用存储过程可以提高性能和可维护性。团队..

C++使用libcurl实现HTTP POST和GET

libcurl简介libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,..

通过HTTP POST调用chatGPT的API

背景从去年十二月份到现在,chatgpt火了很长一段时间,是继Copliot之后又一个智能AI机器人,而且他的功能不限于写代码,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来..

Socket.D 开源传输协议 v2.4.0 发布

Socket.D 协议是基于"事件"和"语义消息""流"的网络应用层传输协议。有用户说,“Socket.D 之于 Socket,尤如 Vue 之于 Js、Mvc 之于 Http”。支持 tcp, udp, ws, kcp 传输。Socket.D 官网:https://socket..

利用ProtoBuf进行高效大文件数据传输

在当今这个信息爆炸的时代,数据传输的效率对于软件开发来说至关重要。不论是服务之间的通信,还是应用与服务器的互动,都迫切需要一种既高效又可靠的数据传输机制。传统数据格式,比如XML和JSON,往往会因为信息冗..

IIS配置HTTP重定向到HTTP非默认端口时的配置

前言将HTTP重定向到HTTPS可以提高网站的安全性、保护用户隐私、增强用户信任、提高搜索引擎排名,并确保与现代浏览器的兼容性。将HTTP重定向到HTTPS有以下几个主要原因:安全性:HTTPS协议使用SSL/TLS加密,可以保护..

发表回复

返回顶部