关于http与https之间的区别
年前的时候进行了一家公司的电话面试两轮,视频面试一轮(已拿到offer),过程中遇到了一个关于http与https的问题,当时回答的并不好,今天将其进行了总结和整理,望读者喜欢;
前言
谷歌在2018年,2月9日宣布从今年7月起,Chrome浏览器将在地址栏把所有HTTP网址标示为不安全网站。
谷歌早在2017年1月发布的Chrome 56,开始把要求用户输入密码或信用卡信息的HTTP网页标识为“不安全”;2017年10月发布的Chrome62,开始把需要输入数据的HTTP网页和在Incognito模式下浏览的HTTP网站标示为“不安全”。
http与https的概念
http:超文本传输协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。;
https为:超文本传输安全协议,也就是说是http的安全版本,https由http进行通信,但利用SSL/TLS来加密数据包。
HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
http存在的问题
- 容易被监听
http通信都是明文,数据在客户端与服务器通信过程中,任何一点都可能被劫持。比如,发送了银行卡号和密码,hacker劫取到数据,就能看到卡号和密码,这是很危险的
- 被伪装
http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求++www.taobao.com++,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。
- 被篡改
hacker(黑客)中间篡改数据后,接收方并不知道数据已经被更改
https解决的问题
https恰好解决了上述的三个问题(被监听、被篡改、被伪装),https不是一种新协议,它是由http+SSL的结合体,由之前的http—–>tcp,改为http——>SSL—–>tcp;
- 防监听
因为数据是加密的,hacker监听得到的是密文,看不懂的;
- 防伪装
https在通信过程中,客户端和服务器端都是携带证书的,证书相当于身份证,有证书就是合法,没有就是非法,证书由第三方颁布,很难伪造;
- 防篡改
https对数据进行了摘要处理,即使被篡改也是会被感知的,改了数据也没有用;
http与https的区别
- https比http更安全
http协议传输的数据时未经过加密的,也就是说是明文;
https在使用http进行通信时,利用了SSL进行了加密传输、身份认证的网络协议(http+SSL),比http更安全。
- https使用需要CA证书,大部分都是付费使用的;
CA是Certificate Authority的缩写,也叫“证书授权中心”,也是需要第三方公司进行授权的。详情看这里
- 端口不一样
HTTP的URL由“http://”起始且默认使用80端口;
HTTPS的URL由“https://”起始且默认使用443端口;
https工作原理
如图所示,https工作原理可以细分为八个步骤:

- 1 客户端发起HTTPS请求
用户在浏览器里输入一个https网址,然后连接到server的443端口。
- 2 服务端的配置
就是指上述提到的数字证书;
- 3 传送证书
Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
- 4 客户端解析证书
客户端会对证书进行判断,验证公钥是否有效,存在问题弹出会警告;若没有问题,生成一个随机值(私钥),然后用证书继续进行加密;
- 5 传送加密信息
客户端将上加密后的随机值(私钥)提供给服务端,服务端会对其进行解密;
- 6 服务端解密信息
服务端解密后得到随机值(私钥),然后把内容通过该值进行对称加密。对称加密就是指把要返回的信息和随机值(私钥)混合加密,这样除非知道随机值(私钥),不然无法获取数据。
- 7 传输加密后的信息
继续将加密后的信息传递给客户端;
- 8 客户端解密信息
客户端用之前生成的私钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。
https缺点
https虽然安全性比http高出很多但是也有一些缺点
- 握手阶段费时
因为SSL的缘故,HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;
- SSL证书需要花钱
便宜没好货,好货不便宜;
- HTTPS连接缓存不如HTTP高效
HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
- SSL证书通常需要绑定IP
SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
- 有局限性
HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。
参考文章:
关于http与https之间的区别的更多相关文章
- http与https之间的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...
- TCP、UDP、HTTP、HTTPS之间的区别
网络由下往上分为: 物理层--- 数据链路层--- 网络层 -- IP协议 传输层 -- TCP协议 会话层 -- 表示层和应用层 -- HTTP协议 1.TCP/IP连接 TCP传输控制协议,是一种 ...
- 浅谈HTTPS协议和SSL、TLS之间的区别与关系
HTTP可能是我们见到过最多的一个字符串了,应该没有之一,而对于HTTPS到来和趋势,我们又开始看到SSL/TLS,所以对于一般不只做技术的人来说这或许还是一个疑问,那么子凡就趁最近在折腾这方面来给大 ...
- TCP/IP Http 和Https socket之间的区别
TCP/IP Http 和Https socket之间的区别 TCP/IP是个协议组,它分为网络层,传输层和应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. ...
- [转帖] select、poll、epoll之间的区别总结[整理] + 知乎大神解答 https://blog.csdn.net/qq546770908/article/details/53082870 不过图都裂了.
select.poll.epoll之间的区别总结[整理] + 知乎大神解答 2016年11月08日 15:37:15 阅读数:2569 http://www.cnblogs.com/Anker/p/3 ...
- 转:WCF、WebAPI、WCFREST、WebService之间的区别
WCF.WebAPI.WCFREST.WebService之间的区别 注明:转载 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API ...
- select、poll、epoll之间的区别
select.poll.epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就 ...
- cookie、 sessionStorage 、localStorage之间的区别和使用
1.cookie:存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密.一般应用最典型的案列就是判断注册用户是否 ...
- sessionStorage 、localStorage 和 cookie 之间的区别
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
随机推荐
- [国嵌笔记][027][ARM协处理器访问指令]
协处理器作用 协处理器用于执行特定的处理任务,如数学协处理器可以执行控制数字处理,以减轻处理器的负担.ARM处理器最多可以支持16个协处理器,其中CP15是最重要的一个协处理器 CP15的作用 CP1 ...
- Java的语言特点详解
1)简单性:java从C++简化而来,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的.java还剔除了C++操作符过载和指针操作. 2)面向对象:java是一个面向对象的语 ...
- 什么是命名空间?php命名空间的基本应用分享
什么是命名空间? php中声明的函数名.类名和常量的名称,在同一次运行中是不能重复的,否则会产生一个致命的错误,常见的解决方法是约定一个前缀.例如 ,在项目开发时,用户 User 模块中的控制器和数据 ...
- 使用bat将优盘中的dig加到系统环境变量
第一次使用bat批处理,记录下,方便查阅. @echo off::当前盘符set curPath=%cd%set digPath ="%curPath%tool\dig"set P ...
- Oracle创建、管理撤销表空间
撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo manage ...
- MySQL Command Line Client显示中文的部分为空
一连接数据库的时候就设置如下: 先设置 set names gbk,然后再插入就显示中文
- tomcat 部署war项目
前提是 jdk环境已配好 把项目war包放到tomcat的webapps目录下 启动tomcat: 这里我把8080端口修改成了80 IP也修改了 如果没修改直接输入localhost:8080/te ...
- window安装swagger editor
1.下载 nodejs,并安装 2. 下载swagger editor并安装 2.1 git clone https://github.com/swagger-api/swagger-editor.g ...
- Mysql的主从配置
前言:这次学习分布式的思想要配置mysql的主从复制和读写分离,我在主从配置上踩到很多坑,在此演示一遍配置过程,并附上问题的说明和自己的一些见解 Mysql主从复制的原理 附上原理图: mysql的主 ...
- Java基础知识(一)
类与对象 1.对象:客观存在的一切事物称之为对象 类:具有相同属性和方法的对象的集合 2.类:属性,方法 3.修饰符: public protected 默认(不写) private 任何地方 ...