`
gaojingsong
  • 浏览: 1163484 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【HTTPS协议介绍】

阅读更多

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面

HTTPS和HTTP的区别

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTPS解决问题

信任主机的问题

采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以所有的银行系统网站,关键部分应用都是https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对局域网对内提供服务处的服务器没有任何意义。局域网中的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以该局域网中的客户端也就肯定信任该服务器。

通讯过程中的数据的泄密和被篡改

1. 一般意义上的https,就是服务器有一个证书。

a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。

b)服务端和客户端之间的所有通讯,都是加密的。

i. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。

ii. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。

2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。

b) 目前大多数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。

二、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

HTTPS加密、加密、及验证过程,如下图所示:

HTTP与HTTPS的区别-马海祥博客

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三、HTTPS的工作原理

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

HTTP与HTTPS的区别-马海祥博客

1、客户端发起HTTPS请求

这个没什么好说的,就是用户在浏览器里输入一个https网址,然后连接到server的443端口。

2、服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。

这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3、传送证书

这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。

4、客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。

如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5、传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

6、服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7、传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。

8、客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

 

五、HTTPS要比HTTP多用多少服务器资源?

HTTPS其实就是建构在SSL/TLS之上的 HTTP协议,所以,要比较HTTPS比HTTP多用多少服务器资源,马海祥认为主要看SSL/TLS本身消耗多少服务器资源。

 

HTTP使用TCP三次握手建立连接,客户端和服务器需要交换3个包;HTTPS除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。

HTTP建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;HTTPS建立连接,耗费436毫秒,ssl部分花费322毫秒,包括网络延时和ssl本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。

当SSL连接建立后,之后的加密方式就变成了3DES等对于CPU负荷较轻的对称加密方式,相对前面SSL建立连接时的非对称加密方式,对称加密方式对CPU的负荷基本可以忽略不记,所以问题就来了,如果频繁的重建ssl的session,对于服务器性能的影响将会是致命的,尽管打开HTTPS保活可以缓解单个连接的性能问题,但是对于并发访问用户数极多的大型网站,基于负荷分担的独立的SSL termination proxy就显得必不可少了,Web服务放在SSL termination proxy之后,SSL termination proxy既可以是基于硬件的,譬如F5;也可以是基于软件的,譬如维基百科用到的就是Nginx。

那采用HTTPS后,到底会多用多少服务器资源,2010年1月Gmail切换到完全使用HTTPS, 前端处理SSL机器的CPU负荷增加不超过1%,每个连接的内存消耗少于20KB,网络流量增加少于2%,由于Gmail应该是使用N台服务器分布式处理,所以CPU负荷的数据并不具有太多的参考意义,每个连接内存消耗和网络流量数据有参考意义,这篇文章中还列出了单核每秒大概处理1500次握手(针对1024-bit 的 RSA),这个数据很有参考意义。

Heartbleed这个被称作史上最大的网络安全漏洞,想必很多人都有所耳闻,Heartbleed之所以能够出现,其实和我们这个问题关系还不小,前面我们谈到了频繁重建SSL/TLS的session对于服务器影响是致命的,所以,聪明的RFC在2012年提出了RFC6520 TLS的心跳扩展,这个协议本身是简单和完美的,通过在客户端和服务器之间来回发送心跳的请求和应答,保活TLS session,减少重建TLS的session的性能开销,令人遗憾的是,openssl在实现这个心跳扩展时,犯了一个低级的错误,没有对收到的心跳请求进行长度检查,直接根据心跳请求长度拷贝数据区,导致简单的心跳应答中可能包含了服务器端的核心数据区内容,用户名,密码,信用卡信息,甚至服务器的私有密钥都有可能泄露。

六、HTTPS的优点

正是由于HTTPS非常的安全,攻击者无法从中找到下手的地方,从站长的角度来说,HTTPS的优点有以下2点:

1、SEO方面

谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

2、安全性

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

(1)、使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

(2)、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

(3)、HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

0
0
分享到:
评论

相关推荐

    网络基础+HTTP-HTTPS协议介绍

    网络基础+HTTP_HTTPS协议介绍

    HTTPS传输协议原理介绍

    HTTPS传输协议原理介绍

    HTTPS协议工作原理介绍.docx

    HTTPS协议工作原理介绍.docx

    Linux下nginx配置https协议访问的方法

    主要介绍了Linux下nginx配置https协议访问的方法,需要的朋友可以参考下

    HTTPS协议数据加密传输基本内容解析

    很多网友了解过有关于网络协议部分的内容,HTTPS协议还是一知半解的,下面这边文章就为大家简单介绍下HTTPS协议的基本内容,大家了解下,希望对大家有帮助

    Tomcat配置HTTPS协议教程

    该文档介绍了如何在tomcat中配置https协议,希望能够给需要的人一定的帮助。

    基于Python实现可靠数据传输协议【100010493】

    详情介绍:https://www.yuque.com/sxbn/ks/100010493 实验目的: 理解可靠数据传输的基本原理 掌握停等协议的工作原理 掌握基于 UDP 设计并实现一个停等协议的过程与技术。 理解滑动窗口协议的基本原理;掌握 GBN 的...

    Nexus使用nginx代理实现支持HTTPS协议

    主要介绍了Nexus使用nginx代理实现支持HTTPS协议,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    iOS9苹果将原http协议改成了https协议的方法

    主要介绍了iOS9苹果将原http协议改成了https协议的方法的相关资料,需要的朋友可以参考下

    SCSI协议文档及一些相关总线协议

    文章《SCSI介绍和SCSI命令承载于各类总线的方式》(链接:https://mp.csdn.net/mp_blog/creation/editor/130845573)一文当中提到的SCSI协议结构相关的协议文档,以及USB和SATA一些总线相关协议文档。 该压缩共包含...

    基于Python实现的可靠数据传输协议.zip

    资源包含文件:设计报告word+源码及数据 基于UDP设计一个简单的停等协议,实现单向可靠数据传输(服务器到客户的数据传输)。...详细介绍参考:https://blog.csdn.net/newlw/article/details/125275320

    关于Https协议和HttpClient的实现详解

    主要给大家介绍了关于Https协议和HttpClient实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    SDIO2.0协议标准完整版.pdf

    Sd 存储卡,是为了满足安全、容量、性能、和环境需求的新型音视频电子存储卡。 Sd 卡包含一个内容保护机制,符合 SDMI 标准,并且有更快的速度和更高的容量。 ...也可以 对用户自己的数据进行非安全访问。...

    SSL协议及WEB安全实现

    SSL是一种安全传输协议,其全称是Securesocketlayer(安全套接层)。该协议最初由Netscape企业发展而来,现已成为网络上用来鉴别网站和网页浏览者身份,以及在浏览器使用者及...本文主要从SSL协议的原理和主要应用进行介绍。

    HTTPS原理介绍.pptx

    HTTPS原理介绍.pptx

    基于Python实现的SKey身份认证协议.zip

    资源包含文件:设计报告word+客户端和服务端代码 语言:Python 3.9 IDE:Pycharm 实现的功能 ...详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/124295814?spm=1001.2014.3001.5502

    HTTPS实现原理详细介绍

    HTTPS:超⽂本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是⼀种通过计算机⽹络进⾏安全通信的传输协议。HTTPS经由HTTP进⾏通信,但...

    协议分析软件课程设计.zip

    资源包含文件:课程报告word+用户使用手册+项目源码 一个像八爪鱼一样的抓包分析软件,要求学生掌握计算机网络协议原理、协议分析方法及...详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125660535

    详解android 用webview加载网页(https和http)

    主要介绍了详解android 用webview加载网页(https和http),详细的介绍了两个错误的解决方法,有兴趣的可以了解一下

Global site tag (gtag.js) - Google Analytics