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数据通信,总结下来无外 ...
随机推荐
- DRC错误解决办法
一.WARNING(ORCAP-1589): Net has two or more aliases - possible short? 错误原因:一个网络有两个网络标号,可能造成短路! 问题本质:原 ...
- 格式化数据保留两位小数,输入格式为 :xxx,xx,,,,x,,(x为浮点数)
/** * 格式化字符串 */ static String dataFormat(String data){ String formatedData = ""; // 浮点数正则表 ...
- Vue 学习笔记 — css属性计算的问题
简书 今天在使用Vue时遇到一个问题:在切换css内联属性时某些特殊属性的计算会有问题,无法得到预期的结果. 例子: https://jsfiddle.net/blqw/cLwau40z/ 上面的页面 ...
- SQL Server Service Broker创建单个数据库会话(消息队列)
概述 SQL Server Service Broker 用来创建用于交换消息的会话.消息在目标和发起方这两个端点之间进行交换.消息用于传输数据和触发消息收到时的处理过程.目标和发起方既可以在同一数据 ...
- Touch事件在移动端web开发中的详解
一.pc端事件回顾 HTML事件.DOM0事件.DOM2事件 事件对象. 如果上述概念不清楚,请先去了解. 二.移动端事件简介 2.1 pc端事件在移动端的问题 移动设备主要特点是不配备鼠标,键盘 ...
- 快速理解Token,Cookie,Session
在Web应用中,HTTP请求是无状态的.即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每次打开一个页面都需要登录一下,就出现了cookie,Session. Cookie Cookie ...
- You need to use a Theme.AppCompat theme (or descendant) with this activity 问题解决
You need to use a Theme.AppCompat theme (or descendant) with this activity 问题解决 问题代码 void initCommit ...
- [Swift]LeetCode36. 有效的数独 | Valid Sudoku
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
- [Swift]LeetCode503. 下一个更大元素 II | Next Greater Element II
Given a circular array (the next element of the last element is the first element of the array), pri ...
- MySQL数据库导入或者同步大量数据时数据丢失解决方案
相信大家都经常遇到这样的情况,我们在编码的过程中经常需要在调试代码的时候切换到本地的数据库上做修改调试,如果当测试数据库的数据在几十万或者上百万数据的时候,我们无论是通过恢复备份/导入SQL的方式来把 ...