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数据通信,总结下来无外 ...
随机推荐
- Oracle约束、索引
Oracle中的约束有五种,分别为: 非空:not null 主键:primary key 外键:foreign key 唯一:unique 检查:check 在数据字典视图 user_constra ...
- 你不知道的JS之作用域和闭包(一)什么是作用域?
原文:你不知道的js系列 什么是作用域(Scope)? 作用域 是这样一组规则——它定义了如何存放变量,以及程序如何找到之前定义的变量. 编译器原理 JavaScript 通常被归类为动态语言或者解释 ...
- 圆形进度条css3样式
<view class="con"> <view class="percent-circle percent-circle-left"> ...
- cadence钻孔文件及光绘文件的生成
完成PCB布线之后,需要生成钻孔文件和光绘文件交给PCB厂家制作PCB板,下面总结详细方法!
- Java 延迟队列使用
延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短 ...
- 数组Array和列表集合ArrayList、LinkedList和Vector的区别
一.ArrayList和Vector的区别 ArrayList与Vector主要从以下方面来说. 1.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同 ...
- Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形
绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...
- 树莓派3B+ HDMI连接显示屏 因供电问题而不能进入系统
1.config.txt文件中hdmi_force_hotplug=1前面的注释符号"#"一定要去掉. 2.完成上述操作后,树莓派通过HDMI连接屏幕,一直在开机画面循环重复,却不 ...
- [Swift]LeetCode372. 超级次方 | Super Pow
Your task is to calculate ab mod 1337 where a is a positive integer and bis an extremely large posit ...
- [Swift]LeetCode438. 找到字符串中所有字母异位词 | Find All Anagrams in a String
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...