初探计算机网络之HTTPS请求
HTTPS自诞生以来,我们总是对它充满着很多的疑问,HTTPS到底是啥?HTTPS多出来的S指的是什么?HTTPS安全可靠吗?访问一个HTTPS的网站的流程等等,带着这些疑问,我们一起来揭开HTTPS的面纱。
HTTPS到底是啥?多出来的S指的是什么?
要想知道HTTPS是啥,首先我们得先知道HTTP是啥,英文全称:Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,那HTTPS多出的S指的其实就是SSL的简写,英文全称:Secure Socket Layer,翻译为安全套接字层,主要是支持网络传输数据的加密工作。SSL协议工作于传输层与应用层之间,为应用提供数据的加密传输。所以,HTTPS的英文全称为 HTTP over SSL,其实就是在之前的HTTP协议传输过程中增加了SSL协议这么一个角色。
HTTPS安全可靠吗?
想要确认是否HTTPS安全可靠,就要从SSL的加密算法进行分析。那么SSL加密能力具体是体现在哪些方面呢?接下来一一进行解析。
我们可以通过对称加密算法对我们传输的数据进行加解密,例如DES对称加密算法,就是相当于每一个网站都与用户之间采用相同的密钥对传输的数据内容进行加解密。但是这种密钥是不能够保证信息安全的,很容易被黑客给窃取,唯一能够提升安全性的就是在加密的基础上再不断进行加密。
但是换个角度想想,如果我们不能阻止黑客来窃取我们的报文,那能不能够保证就算黑客他们成功窃取,也无法查看报文里面的数据。既然DES算法对数据进行对称加密,还是容易被黑客窃取篡改,那不对称加密算法是否达到目的呢?答案是可以的,比如RSA算法,该算法将加密的报文数据分成公钥和密钥,由于两个密钥并不会一模一样,所以又称非对称加密。私钥是用来对公钥加密的数据进行解密的,这个密钥是需要严格保密的,防止窃取的。公钥是对数据信息进行加密,任何人都可以够得到它,也包括黑客。
非对称加密算法的安全性原理其实就是基于大质数分解的困难性,比如说在非对称加密算法中公钥和私钥是一对大质数函数。计算这两个大质数的乘积相对来说是比较简单的,但是要将这两个大质数的乘积从而分解成两个质数(即逆运算)是比较困难的。RSA算法解密的过程就等同如此。所以,在网络信息传输时,首先将自己的公钥互相发送给对方。这样,一方在发送信息时,先将对方的公钥进行加密生成密文。对方收到密文之后,再用私钥进行解密,这样一来,信息安全就自然地提高了。
但是呢,非对称加密并不是没有缺点的,它有一个很大的痛点就体现在加密和解密耗时过长,比较适合于对少量数据进行处理。实际上,HTTPS也正是通过这样一种非对称加密方式来建立安全的SSL连接的。下面以A和B为例子,讲解下非对称加密传输的过程:
- A 和B约定好网络数据传输采用的加密算法是
RSA算法。 - 然后A和B分别根据
RSA生成一对密钥(公钥和私钥),然后再彼此交换了公钥。 - A使用B的
密钥(公钥)加密报文信息生成了密文发送给B - B收到了
密文之后,采用自己的密钥(私钥)进行密文解密。 - B也一样,通过同种方式给A发送报文信息,当然解密方式跟B一样。
看起来是一套十分完美的方案,但是还是会存在一定的风险。万一在步骤2过程中,黑客截断了A的信息,既然它无法对密钥进行解密,但是黑客可以自己定义一个密钥再发送给B,这样,B是没有办法得知这个密钥是A还是黑客发送的,这样信息还是会被黑客给窃取掉了。
那么能不能对发送方的密钥进行身份校验或者找一个权威的中介来担保呢?答案肯定是可以的。CA(Certificate Authority)数字证书横空出世,就是给HTTPS颁发证书的组织机构。作为当前互联网主流的超文本传输协议,在安全地进行HTTPS连接时,就必须需要数字证书来证明自己的身份。
CA证书的工作原理其实就是在用户生成的密钥之中公钥信息中额外添加了用户信息和CA签名。这样,接受数据的一方只要对发送方的公钥进行签名校验,就可以确认发送方的身份了。
那这样的话,HTTPS安全可靠的问题就得以解决了。
访问一个HTTPS的网站的流程
那么结合上面描述的,访问一个HTTPS的网站的大致流程如下:
- 浏览器向服务器发送请求,请求中包括浏览器支持的协议,并附带一个随机数。
- 服务器收到请求后,选择某种非对称加密算法(SHA等其他非对称加密算法),把CA数字证书签名公钥、身份信息发送给浏览器,同时也附带一个随机数。
- 浏览器收到后,验证证书的真实性,用服务器的公钥发送握手信息给服务器。
- 服务器解密后,使用之前的随机数计算出一个对称加密的密钥,以此作为加密信息并发送。
- 后续所有的信息发送都是以对称加密方式进行的。
初探计算机网络之HTTPS请求的更多相关文章
- 美图App的移动端DNS优化实践:HTTPS请求耗时减小近半
本文引用了颜向群发表于高可用架构公众号上的文章<聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例>的部分内容,感谢原作者. 1.引言 移动互联网时代,APP 厂商之间的竞争非常 ...
- 走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程
初探Tomcat的HTTP请求过程 前言:1.作为Java开发人员,大多都对Tomcat不陌生,由Apache基金会提供技术支持与维护,因为其免费开源且易用,作为Web服务器深受市场欢迎,所以有必要对 ...
- Http、Https请求工具类
最近在做微信开发,使用http调用第三方服务API,有些是需要https协议,通过资料和自己编码,写了个支持http和https的工具类,经验证可用,现贴出来保留,也供需要的人使用(有不足的地方,也请 ...
- charles4抓https请求的注意事项
最近升级charles4.0后发现抓不了https请求了,但很奇怪ssl证书一样,记得以前用3.0就可以,今天仔细研究了一下,发现4.0的ssl代理设置中有一段说明(可能3.0也有但没注意): 直接上 ...
- 使用curl进行https请求
简单示例: /** * @param $url * @return array * 进行https请求,并且遇到location进行跳转 */ function https($url){ $resul ...
- 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
通用辅助类 下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需 要获取认证信息(如Cookie),所以返回的是HttpWeb ...
- 【转载】JMeter学习(三十六)发送HTTPS请求
Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. ...
- 如何使用查尔斯代理抓取https请求
首先 查尔斯代理是一个很不错的抓包工具 有适合各种系统的版本 最近http的请求几乎铺天盖地的已经变为了https了 其中的好处有很多 更加安全(http://www.cnblogs.com/lo ...
- C# HttpWebRequest GET HTTP HTTPS 请求
下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse ...
随机推荐
- 莫逸风CSDN文章目录
『Ⅱ』-----随笔 莫逸风CSDN文章目录 The Programmer's Oath程序员的誓言-- 今天突发奇想写了一个小工具,CSDN文章目录生成器 vue去掉一些烦人的校验规则 输入npm ...
- 一、vue基础语法(轻松入门vue)
轻松入门vue系列 Vue基础语法 一.HelloWord 二.MVVM设计思想 三.指令 1. v-cloak 2. v-text 3. v-html 4. v-show 4. v-pre 5. v ...
- Linkerd 2.10(Step by Step)—配置重试
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- 目录-理解ASP.NET Core
<理解ASP.NET Core>基于.NET5进行整理,旨在帮助大家能够对ASP.NET Core框架有一个清晰的认识. 目录 [01] Startup [02] Middleware [ ...
- Linux下Sed命令替换文件中的所有IP
命令: sed -ri 's/([0-9]{1,3}\.){3}[0-9]{1,3}/localhost/g' es_create_index.sh 如图:
- k8s核心资源之Pod概念&入门使用讲解(三)
目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制 ...
- 如何让阿三 Windows 10、11 的恢复分区(Recovery Partition)恢复到 “盖茨” 模式
如何将 Windows Server 2022 的恢复分区(Recovery Partition)移动到 C 盘之前,恢复 C 盘容量调整功能. 请访问原文链接:https://sysin.org/b ...
- Typescript详解
typescript由微软开发的一款开源编程语言. ts是jacascript的超集,遵循ES6,ES5规范,ts扩展了js的语法. ts更像后端java,c#这样的面向对象的语言,可以让js开发大型 ...
- vue-router路由钩子
路由跳转前后,需要做某些操作,这时就可以使用路由钩子来监听路由的变化. 接收三个参数: to: Route: 即将要进入的目标路由对象 from: Route: 当前导航正要离开的路由 next: F ...
- CodeForce-808C Tea Party(结构体排序贪心)
Tea Party CodeForces - 808C 现在有 n 个杯子,每个杯子的容量为 a1, a2, ..., an.他现在一共有 w 毫升茶 (w ≤ a1 + a2 + ... + an) ...