​ 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为例子,讲解下非对称加密传输的过程:

  1. A 和B约定好网络数据传输采用的加密算法是RSA算法。
  2. 然后A和B分别根据RSA生成一对密钥(公钥私钥),然后再彼此交换了公钥
  3. A使用B的密钥(公钥)加密报文信息生成了密文发送给B
  4. B收到了密文之后,采用自己的密钥(私钥)进行密文解密。
  5. B也一样,通过同种方式给A发送报文信息,当然解密方式跟B一样。

看起来是一套十分完美的方案,但是还是会存在一定的风险。万一在步骤2过程中,黑客截断了A的信息,既然它无法对密钥进行解密,但是黑客可以自己定义一个密钥再发送给B,这样,B是没有办法得知这个密钥是A还是黑客发送的,这样信息还是会被黑客给窃取掉了。

​ 那么能不能对发送方的密钥进行身份校验或者找一个权威的中介来担保呢?答案肯定是可以的。CA(Certificate Authority)数字证书横空出世,就是给HTTPS颁发证书的组织机构。作为当前互联网主流的超文本传输协议,在安全地进行HTTPS连接时,就必须需要数字证书来证明自己的身份。

​ CA证书的工作原理其实就是在用户生成的密钥之中公钥信息中额外添加了用户信息CA签名。这样,接受数据的一方只要对发送方的公钥进行签名校验,就可以确认发送方的身份了。

​ 那这样的话,HTTPS安全可靠的问题就得以解决了。

访问一个HTTPS的网站的流程

​ 那么结合上面描述的,访问一个HTTPS的网站的大致流程如下:

  1. 浏览器向服务器发送请求,请求中包括浏览器支持的协议,并附带一个随机数。
  2. 服务器收到请求后,选择某种非对称加密算法(SHA等其他非对称加密算法),把CA数字证书签名公钥、身份信息发送给浏览器,同时也附带一个随机数。
  3. 浏览器收到后,验证证书的真实性,用服务器的公钥发送握手信息给服务器。
  4. 服务器解密后,使用之前的随机数计算出一个对称加密的密钥,以此作为加密信息并发送。
  5. 后续所有的信息发送都是以对称加密方式进行的。

初探计算机网络之HTTPS请求的更多相关文章

  1. 美图App的移动端DNS优化实践:HTTPS请求耗时减小近半

    本文引用了颜向群发表于高可用架构公众号上的文章<聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例>的部分内容,感谢原作者. 1.引言 移动互联网时代,APP 厂商之间的竞争非常 ...

  2. 走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程

    初探Tomcat的HTTP请求过程 前言:1.作为Java开发人员,大多都对Tomcat不陌生,由Apache基金会提供技术支持与维护,因为其免费开源且易用,作为Web服务器深受市场欢迎,所以有必要对 ...

  3. Http、Https请求工具类

    最近在做微信开发,使用http调用第三方服务API,有些是需要https协议,通过资料和自己编码,写了个支持http和https的工具类,经验证可用,现贴出来保留,也供需要的人使用(有不足的地方,也请 ...

  4. charles4抓https请求的注意事项

    最近升级charles4.0后发现抓不了https请求了,但很奇怪ssl证书一样,记得以前用3.0就可以,今天仔细研究了一下,发现4.0的ssl代理设置中有一段说明(可能3.0也有但没注意): 直接上 ...

  5. 使用curl进行https请求

    简单示例: /** * @param $url * @return array * 进行https请求,并且遇到location进行跳转 */ function https($url){ $resul ...

  6. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

    通用辅助类  下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需 要获取认证信息(如Cookie),所以返回的是HttpWeb ...

  7. 【转载】JMeter学习(三十六)发送HTTPS请求

    Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. ...

  8. 如何使用查尔斯代理抓取https请求

    首先 查尔斯代理是一个很不错的抓包工具 有适合各种系统的版本 最近http的请求几乎铺天盖地的已经变为了https了  其中的好处有很多  更加安全(http://www.cnblogs.com/lo ...

  9. C# HttpWebRequest GET HTTP HTTPS 请求

    下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需要获取认证信息(如Cookie),所以返回的是HttpWebResponse ...

随机推荐

  1. 分布式链路追踪系统Sleuth和ZipKin

    1.微服务下的链路追踪讲解和重要性 简介:讲解什么是分布式链路追踪系统,及使用好处 进行日志埋点,各微服务追踪. 2.SpringCloud的链路追踪组件Sleuth 1.官方文档 http://cl ...

  2. 使用dom4j工具:XMLWriter写出文件(五)

    package dom4j_write; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStre ...

  3. 了解Flask

    了解Flask 什么是Flask Flask 是一个微框架(Micro framework),所谓微框架,它就是很轻量级的,作者划分出了Flask应该负责什么(请求路由.处理请求.返回响应).不应该负 ...

  4. struts2拦截action多种方法

    按照教程写的,运行的时候显示There is no Action mapped for namespace [/] and action name [login!method1] associated ...

  5. MySQL高可用主从复制简介

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 简介 1.1 概述 二 技术原理 2.1 支持的复制类型 2.2 技术特点 2 ...

  6. win+R 中的命令

    cmd------CMD命令提示符 MSConfig------系统配置实用程序 regedit------注册表编辑器 notepad------打开记事本 calc------启动计算器 msts ...

  7. 洛谷P2115 Sabotage G 题解

    题目 [USACO14MAR]Sabotage G 题解 本蒟蒻又来了,这道题可以用二分答案来解决.我们可以设答案最小平均产奶量为 \(x \ (x \in[1,10000])\) .然后二分搜索 \ ...

  8. WebService学习总结(六)--CXF 与Spring结合+tomcat发布

    该项目在上文   WebService学习总结(四)--基于CXF的服务端开发  的基础上修改为spring上发布的webservice接口 1.新建web project 工程 2.导入spring ...

  9. ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别

    ​前言:这篇论文旨在以极低的计算成本解决性能大幅下降的问题.提出了微分解卷积,将卷积矩阵分解为低秩矩阵,将稀疏连接整合到卷积中.提出了一个新的动态激活函数-- Dynamic Shift Max,通过 ...

  10. C# HttpWebResponse 请求常见的状态码

    Accepted 202 等效于 HTTP 状态 202. Accepted 指示已接受请求做进一步处理. AlreadyReported 208 等效于 HTTP 状态 208. AlreadyRe ...