HTTP与HTTPS的理解
最近一直也在面试的过程中,可能由于各个方面的问题,导致没有时间抽出更新博客,今天开始陆续更新!!!以后自己的博客,会向React Native,swift ,以及H5延展,成为一个全栈的技术人员。本篇将讲述HTTP与HTTPS的主要区别以及HTTPS里面到底如何操作的,大约需要15-20分钟左右。
一、HTTP
HTTP:超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式的应用层协议。最初的HTTP用于提供一种发布和接收html页面的方法,是一种明文传输,端口是80。
二、HTTPS与HTTP的区别
1. HTTP的URL以http://”开始,并且默认端口号为80;而HTTPS的URL以“https://”开始,并且默认端口为443。
2. HTTP协议运行在TCP之上,所有的传输内容都是明文,客户端和服务端都不需要对方的身份;HTTPS是运行在SSL/TLS之上的HTTP,所有的传输内容都会经过加密,加密采用的是对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。
1)对称加密:密钥是只有一个,加密解密也为同一个密码,并且加解密速度快,我们使用典型的对称加密算法有DES、AES等;
2)非对称加密: 首先密钥是成对出现(公钥无法推算出私钥,私钥也无法推出公钥),加密解密使用不同的密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密而言速度较慢,我们使用典型的非对称加密算法有RSA、DSA等

三、HTTPS
1.为什么HTTPS采用混合加密机制?
为什么不单独采取非对称加密?因为非对称加密要比对称加密的方式更复杂,所以应该充分利用两者的优势。用非对称的方式来安全传输对称加密的密钥,而建立通信交换报文阶段就使用对称加密的方式。
2.HTTPS验证流程

(1)客户端发起HTTPS的请求,把自身支持的SSL的指定版本,通过加密算法发送服务端;
(2)服务端收到后会与自身支持的做对比,如果不支持则连接就会断开,反之则会从中选中一种加密算法和哈希算法以证书的形式返回客户端,证书中就包含了公钥、颁发机构,失效日期和网址等等;
(3)客户端收到服务器响应后做以下的几件事:
- 验证证书合法性
颁发证书的机构是否过期和合法,以及网址是否与正在访问地址一致等,证书验证通过后,浏览器地址栏中会加上小锁
- 生成随机密码
如果证书通过验证(或者用户接受了不授信的证书)这时浏览器会生成一串随机数,然后用证书中的公钥进行加密。
- Hash握手信息
用最开始约定的Hash方式,把握手消息进行取Hash值,然后通过随机数加密“握手消息+握手消息Hash值(签名)",最后一起发送给服务器
(4)服务器得到客户端传来的密文,用自己的私钥来解密握手信息取出随机数密码,然后再用随机数密码来解密握手消息与Hash值,并与传过来的Hash值进行对比确认是否一致。然后用随机密码加密一段握手消息发给客户端。
(5)客户端用随机数解密并且计算握手消息的Hash,如果与服务器发来的Hash一致,此时握手的过程就会结束。之后所有的通信数据都会由于先前的浏览器生成的随机密码并用对称加密算法进行加密(因为密码只有客户端和服务端知道,即使被拦截也是没有办法解密数据的,保证了通信的安全)
四、HTTPS总结
HTTPS要通信过程得到安全保证,必须使用对称加密算法,但是协商对称加密加密算法时,需要采用非对称加密算法来保证安全,然后直接使用非对称加密的过程本身也不是很安全,因为可能会有中间人篡改公钥的可能性,所以客户端和服务器不直接使用公钥,采取的是数字证书签发机构颁发的证书来保证非对称加密过程的安全。从而保证了通信的安全问题。
HTTP与HTTPS的理解的更多相关文章
- https 的理解
前言: 本篇博文来记录下对http及https的理解.(会有点 杂,补缺补漏) 引用:https://blog.csdn.net/u011109589/article/details/80306479 ...
- 公钥与私钥对HTTPS的理解(数字证书的需要)
本文转自某大牛链接 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下window ...
- [安全] HTTPS的理解
一.概述 在下面的章节,我们要搞明白以下几个问题: HTTP和HTTPS的区别,为什么要使用HTTPS HTTPS如何解决加密问题 HTTPS如何避免中间人攻击 CA证书是什么 CA证书是如何申请和颁 ...
- HTTPS深入理解
HTTPS = HTTP + TLS
- 报文、http、https的理解
一.何为报文? 报文是网络中交换与传输的数据单位,即站点一次性要发送的数据块.报文包含了将要发送的完整的数据信息,其长短不一致,长度不限且可变. 二.报文的作用 报文多是多个系统之间需 ...
- charles刷分微信跳一跳小程序对https的理解
以前以为只要安装了https 客户端与服务端的数据会被加密就安全了 事实上 只要任意一款抓包工具 并伪造证书 就可以解密这个被所谓https加密的数据 如 可以下载charles的根证书 作为伪 ...
- 简单说一下你对http和https的理解
http是一种超文本传输协议,传输的数据都是未加密的,也就是显示在明面上的,是现在互联网上应用最为广泛的一种网络协议,相对来说不太安全,但是所需成本很小.http一般的端口号为80. https则是具 ...
- HTTP 与HTTPS 简单理解
HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因 ...
- 如果这样来理解HTTPS,一篇就够了!
1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...
随机推荐
- jquery项目中一些常用方法
1.获取url中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + &quo ...
- node.js 递归复制文件夹(附带文件过滤功能)
1.简介: 很简单,写了一个node操作文件的小脚本,主要实现对目标文件夹中内容的复制.还顺带一个按照文件夹或者文件名过滤的功能. 2.应用场景 适合基于 node 环境的项目,项目打包的时候,配合 ...
- idea注册码
2019 idea 注册码: N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLC ...
- android sdk 历史版本下载地址
https://developer.android.google.cn/studio/archive#android-studio-3-0?utm_source=androiddevtools& ...
- RabbitMQ in Action (1): Understanding messaging
1. Consumers and producers Producers create messages and publish (send) them to a broker server (Rab ...
- 依赖注入[2]: 基于IoC的设计模式
正如我们在<控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC自身不仅与面向对象没有必然的联系,它也算不上是一种设计模式.一般来讲,设计模 ...
- vue项目实践-添加axios封装api请求
安装 axios npm install axios --save 创建实例 (utils/fetch.js) axios 默认提交格式为:application/json 可使用 qs 模块(需要安 ...
- Redis两种秒杀抢购思路
方式一:使用DECR减库存 /** * 外卡进入减库存 * @param competitionQuarterInDTO * @return */@Overridepublic int otherCa ...
- Python必学Django框架,入门到精通学习视频教程全都在这可以领
“人生苦短,我用python”,学python的小伙伴应该都了解这句话的含义.但是,学python,你真正了了解强大的Django框架吗!? 据说Django还是由吉普赛的一个吉他手的名字命名的呢,有 ...
- Vue(day1)
一.起步 <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/v ...