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数据通信,总结下来无外 ...
随机推荐
- Angular 2项目的环境配置和项目搭建
AngularJS2 发布于2016年9月份,它是基于ES6来开发的. AngularJS2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行.AngularJS2 ...
- spring-cloud-Zuul学习(一)【基础篇】--入门案例【重新定义spring cloud实践】
-- 2 ...
- data.table包使用应该注意的一些细节
fread中nThread 参数的使用 注意默认nThread=getDTthreads(),即使用所有能用的核心,但并不是核心用的越多越好,本人亲自测试的情况下,其实单核具有较强的性能,只有在数 ...
- CentOS7设置SVN自启动,提交报错,无权限.手动kill掉后重启,成功.
参考文档:http://tieba.baidu.com/p/5174054662 最近想尝试在CentOS7上搭建SVN服务.遇到的问题大致如题,我这边再详细描述一下. 虚拟机:VMware® Wor ...
- ABP入门系列(2)——领域层创建实体
ABP入门系列目录--学习Abp框架之实操演练 这一节我们主要和领域层打交道.首先我们要对ABP的体系结构以及从模板创建的解决方案进行一一对应.网上有代码生成器去简化我们这一步的任务,但是不建议初学者 ...
- JAVA小白开发环境配置(编译器为Idea)
JDK配置 1.首先到官网下载最新版JDK:Oracle官网下载 Accept License Agreement–>下载适合自己pc版本的jdk(此处以64位windows为例.x86是32位 ...
- 值得收藏!!javascript数组中多条对象去重方式,很实用!!!
在数组中都是数字的时候很好去重,例如:var arr=[1,2,2,2,3,4,5,4,5,3,6]:可以用两层for循环或者其他方式进行去重 我在这里也给出一个方法吧: Array.prototy ...
- 【RL-TCPnet网络教程】第32章 RL-TCPnet之Telnet服务器
第32章 RL-TCPnet之Telnet服务器 本章节为大家讲解RL-TCPnet的Telnet应用,学习本章节前,务必要优先学习第31章的Telnet基础知识.有了这些基础知识之后,再搞 ...
- .Net Core中Dapper的使用详解
Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. ...
- [Swift]LeetCode161. 一次编辑距离 $ One Edit Distance
Given two strings S and T, determine if they are both one edit distance apart. 给定两个字符串S和T,确定它们是否都是是一 ...