• 关于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工作原理可以细分为八个步骤:
    image

    • 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根证书的情况下,中间人攻击一样可行。

    参考文章:

    https://en.wikipedia.org/wiki/HTTPS

    https://www.cnblogs.com/wqhwe/p/5407468.html

    http://blog.csdn.net/wangjun5159/article/details/51510594

  • 相关阅读:
    .NET 6 Minimal APIs
    ABP标准模型来处理异常
    分析Clean Architecture
    Visual Studio单元测试命令行方式之MSTest.exe命令
    NuGet的使用、部署、搭建私有服务
    版本号的语义化版本控制 2.0.0 标准
    Visual Studio的各个历史版本下载及安装教程
    PyQt5 事件机制
    PyQt5 QObject 对象删除
    PyQt5 定时器事件
  • 原文地址:https://www.cnblogs.com/wangyue99599/p/8459734.html
Copyright © 2020-2023  润新知