HTTP与HTTPS的区别,详细介绍(转)

目录html

HTTP与HTTPS介绍算法

HTTPS和HTTP的主要区别segmentfault

客户端在使用HTTPS方式与Web服务器通讯时的步骤浏览器

CA证书的申请及其使用过程缓存

HTTPS的缺点安全

SSL与TLS的区别?服务器

SSL/TLS历史网络

SSL/TLS协议的基本过程架构

HTTPS涉及的计算环节性能

如何优化HTTPS的速度

 

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

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

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

        HTTPS协议的主要做用能够分为两种:一种是创建一个信息安全通道,来保证数据传输的安全;另外一种就是确认网站的真实性。

 

HTTPS和HTTP的主要区别
        一、https协议须要到CA申请证书,通常免费证书较少,于是须要必定费用。

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

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

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

 

 

客户端在使用HTTPS方式与Web服务器通讯时的步骤
 (1)客户使用https的URL访问Web服务器,要求与Web服务器创建SSL链接。

 (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

 (3)客户端的浏览器与Web服务器开始协商SSL/TLS链接的安全等级,也就是信息加密的等级。

 (4)客户端的浏览器根据双方赞成的安全等级,创建会话密钥,而后利用网站的公钥将会话密钥加密,并传送给网站。

 (5)Web服务器利用本身的私钥解密出会话密钥。

 (6)Web服务器利用会话密钥加密与客户端之间的通讯。

 

   

        尽管HTTPS并不是绝对安全,掌握根证书的机构、掌握加密算法的组织一样能够进行中间人形式的攻击,但HTTPS还是现行架构下最安全的解决方案,但他大幅增长了中间人攻击的成本

 

 

CA证书的申请及其使用过程
上面客户端使用HTTPS与服务器通讯中使用到了CA认证,这里可能你们会问为何不直接使用非对称加密的形式直接进行,首先这里先介绍下非对称加密。

非对称加密:客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙能够对外暴露,而私有密匙只有本身可见。

使用公有密匙加密的消息,只有对应的私有密匙才能解开。反过来,使用私有密匙加密的消息,只有公有密匙才能解开。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用本身的私匙进行解密。

 

 

非对称加密的优势:

非对称加密采用公有密匙和私有密匙的方式,解决了http中消息保密性问题,并且使得私有密匙泄露的风险下降。

由于公匙加密的消息只有对应的私匙才能解开,因此较大程度上保证了消息的来源性以及消息的准确性和完整性。

非对称加密的缺点:

非对称加密时须要使用到接收方的公匙对消息进行加密,可是公匙不是保密的,任何人均可以拿到,中间人也能够。那么中间人能够作两件事,第一件是中间人能够在客户端与服务器交换公匙的时候,将客户端的公匙替换成本身的。这样服务器拿到的公匙将不是客户端的,而是中间人的。服务器也没法判断公匙来源的正确性。第二件是中间人能够不替换公匙,可是他能够截获客户端发来的消息,而后篡改,而后用服务器的公匙加密再发往服务器,服务器将收到错误的消息。

非对称加密的性能相对对称加密来讲会慢上几倍甚至几百倍,比较消耗系统资源。正是由于如此,https将两种加密结合了起来。

 

为了应对上面非对称加密带来的问题,咱们就引入了数字证书与数字签名

故CA认证介入咱们的HTTPS链接的过程以下:

一、服务器拥有本身的私钥与公钥

二、服务器将公钥交给CA认证机构,请求给予一份数字证书

三、CA认证机构生成数字证书,并颁发给服务器

四、服务器将带有公钥信息的数字证书发给客户端

五、进入客户端生成对称密钥再进行对接的过程......

 

 

HTTPS的缺点
  虽说HTTPS有很大的优点,但其相对来讲,仍是存在不足之处的:

  (1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增长10%到20%的耗电;

  (2)HTTPS链接缓存不如HTTP高效,会增长数据开销和功耗,甚至已有的安全措施也会所以而受到影响;

  (3)SSL证书须要钱,功能越强大的证书费用越高,我的网站、小网站没有必要通常不会用。

     (4)SSL证书一般须要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

  (5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么做用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家能够控制CA根证书的状况下,中间人攻击同样可行。

 

        实践中建议保留http。因此咱们在切换的时候能够作http和https的兼容,具体实现方式是,去掉页面连接中的http头部,这样能够自动匹配http头和https头。例如:将http://www.baidu.com改成//www.baidu.com。而后当用户从http的入口进入访问页面时,页面就是http,若是用户是从https的入口进入访问页面,页面即便https的

 

SSL与TLS的区别?
SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向链接的网络层协议和应用层协议之间的一种协议层。SSL经过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通信。该协议由两层组成:SSL记录协议和SSL握手协议。

TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

 

SSL/TLS历史
1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,可是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,获得大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变更是2011年TLS 1.2的修订版。
目前,应用最普遍的是TLS 1.0,接下来是SSL 3.0。可是,主流浏览器都已经实现了TLS 1.2的支持。
TLS 1.0一般被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

 

 

SSL/TLS协议的基本过程

(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成"对话密钥"。
(3) 双方采用"对话密钥"进行加密通讯。
上面过程的前两步,又称为"握手阶段"(handshake)

 

1 客户端发出请求(ClientHello)

(1) 支持的协议版本,好比TLS 1.0版。
(2) 一个客户端生成的随机数,稍后用于生成"对话密钥"。
(3) 支持的加密方法,好比RSA公钥加密。
(4) 支持的压缩方法。

2 服务器回应(SeverHello)

(1) 确认使用的加密通讯协议版本,好比TLS 1.0版本。若是浏览器与服务器支持的版本不一致,服务器关闭加密通讯。
(2) 一个服务器生成的随机数,稍后用于生成"对话密钥"。
(3) 确认使用的加密方法,好比RSA公钥加密,此时带有公钥信息。
(4) 服务器证书。

3 客户端回应

(1) 一个随机数pre-master key。该随机数用服务器公钥加密,防止被窃听。
(2)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的全部内容的hash值,用来供服务器校验。

        上面第一项的随机数,是整个握手阶段出现的第三个随机数,又称"pre-master key"。有了它之后,客户端和服务器就同时有了三个随机数,接着双方就用事先商定的加密方法,各自生成本次会话所用的同一把"会话密钥"。

 

至于为何必定要用三个随机数,来生成"会话密钥":

        "无论是客户端仍是服务器,都须要随机数,这样生成的密钥才不会每次都同样。因为SSL协议中证书是静态的,所以十分有必要引入一种随机因素来保证协商出来的密钥的随机性。

        对于RSA密钥交换算法来讲,pre-master-key自己就是一个随机数,再加上hello消息中的随机,三个随机数经过一个密钥导出器最终导出一个对称密钥。

        pre master的存在在于SSL协议不信任每一个主机都能产生彻底随机的随机数,若是随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret做为密钥就不合适了,所以必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能彻底不随机,但是是三个伪随机就十分接近随机了,每增长一个自由度,随机性增长的可不是一。"

        此外,若是前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息。

4 服务器的最后回应

        服务器收到客户端的第三个随机数pre-master key以后,计算生成本次会话所用的"会话密钥"。(客户端在第三阶段也生成这个“会话秘钥”)。而后,向客户端最后发送下面信息。
(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的全部内容的hash值,用来供客户端校验。

        至此,整个握手阶段所有结束。接下来,客户端与服务器进入加密通讯,就彻底是使用普通的HTTP协议,只不过用"会话密钥"加密内容。

 

TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS 在SSL v3.0 的基础上,提供了如下加强内容:

  1)更安全的MAC算法

  2)更严密的警报

  3)“灰色区域”规范的更明确的定义

  3.TLS对于安全性的改进

  1)对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放的网络(如因特网)上传送时,该代码确保记录不会被变动。SSLv3.0还提供键控消息认证,但HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。

 2)加强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法保证其安全性。若是任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。

 3)改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有被变动。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。

 4)一致证书处理:与SSLv3.0不一样,TLS试图指定必须在TLS之间实现交换的证书类型。

 5)特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对什么时候应该发送某些警报进行记录。

 

 

HTTPS很安全,很古老也很成熟,为何一直到今天咱们还有66%的网站不支持HTTPS呢?

        一、慢,HTTPS未经任何优化的状况下要比HTTP慢几百毫秒以上,特别在移动端可能要慢500毫秒以上,关于HTTPS慢和如何优化已是一个很是系统和复杂的话题

        二、贵,特别在计算性能和服务器成本方面。HTTPS为何会增长服务器的成本?相信你们也都清楚HTTPS要额外计算,要频繁地作加密和解密操做,几乎每个字节都须要作加解密,这就产生了服务器成本

 

另外还有:

        一、大量的计算。SSL的每个字节都涉及到较为复杂的计算。即便是clientHello,也须要在握手完成时作校验。

        二、TLS协议的封装和解析。HTTPS全部数据都是按照TLS record格式进行封装和解析的。

       三、协议的网络交互。从TLS的握手过程能够看出,即便不须要进行任何计算,TLS的握手也须要至少1个RTT(round trip time)以上的网络交互。

RTT(Round-Trip Time): 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便当即发送确认),总共经历的时延。

        四、HTTPS下降用户访问速度(需屡次握手)

        五、网站改用 HTTPS 之后,由 HTTP 跳转到 HTTPS 的方式增长了用户访问耗时(多数网站采用 30一、302 跳转)

        六、HTTPS 涉及到的安全算法会消耗 CPU 资源,须要增长服务器资源(https 访问过程须要加解密)

 

 

 

HTTPS涉及的计算环节
        一、非对称密钥交换。好比RSA, Diffie-Hellman, ECDHE.这类算法的主要做用就是根据客户端和服务端不对称的信息,通过高强度的密钥生成算法,生成对称密钥,用于加解密后续应用消息。

         二、对称加解密。服务端使用密钥A对响应内容进行加密,客户端使用相同的密钥A对加密内容进行解密,反之亦然。

        三、消息一致性验证。每一段加密的内容都会附加一个MAC消息,即消息认证码。简单地说就是对内容进行的安全哈希计算,接收方须要校验MAC码。

        四、证书签名校验。这个阶段主要发生在客户端校验服务端证书身份时,须要对证书签名进行校验,确保证书的真实性。

 

以上图片文字解释来源:https://www.cnblogs.com/mylanguage/p/5635524.html

OCSP(Online Certificate Status Protocol,在线证书状态协议)

 

 

如何优化HTTPS的速度
HSTS重定向技术

HSTS(HTTP Strict Transport Security)技术,启用HSTS后,将保证浏览器始终链接到网站的 HTTPS 加密版本。

        1. 用户在浏览器里输入 HTTP 协议进行访问时,浏览器会自动将 HTTP 转换为 HTTPS 进行访问,确保用户访问安全;

        2. 省去301跳转的出现,缩短访问时间;

        3. 能阻止基于 SSL Strip 的中间人攻击,万一证书有错误,则显示错误,用户不能回避警告,从而可以更加有效安全的保障用户的访问。

 

TLS握手优化

        在传输应用数据以前,客户端必须与服务端协商密钥、加密算法等信息,服务端还要把本身的证书发给客户端代表其身份,这些环节构成 TLS 握手过程。

        采用 False Start (抢先开始)技术,浏览器在与服务器完成 TLS 握手前,就开始发送请求数据,服务器在收到这些数据后,完成 TLS 握手的同时,开始发送响应数据。

        开启 False Start 功能后,数据传输时间将进一步缩短。

 

Session Identifier(会话标识符)复用

        若是用户的一个业务请求包含了多条的加密流,客户端与服务器将会反复握手,一定会致使更多的时间损耗。或者某些特殊状况致使了对话忽然中断,双方就须要从新握手,增长了用户访问时间。

        (1)服务器为每一次的会话都生成并记录一个 ID 号,而后发送给客户端;

        (2)若是客户端发起从新链接,则只要向服务器发送该 ID 号;

        (3)服务器收到客户端发来的 ID 号,而后查找本身的会话记录,匹配 ID 以后,双方就能够从新使用以前的对称加密秘钥进行数据加密传输,而没必要从新生成,减小交互时间。

 

开启OSCP Stapling,提升TLS握手效率

        采用OCSP Stapling ,提高 HTTPS 性能。服务端主动获取 OCSP 查询结果并随着证书一块儿发送给客户端,从而客户端可直接经过 Web Server 验证证书,提升 TLS 握手效率。

        服务器模拟浏览器向 CA 发起请求,并将带有 CA 机构签名的 OCSP 响应保存到本地,而后在与客户端握手阶段,将 OCSP 响应下发给浏览器,省去浏览器的在线验证过程。因为浏览器不须要直接向 CA 站点查询证书状态,这个功能对访问速度的提高很是明显。

 

彻底前向加密PFS,保护用户数据,预防私钥泄漏

        非对称加密算法 RSA,包含了公钥、私钥,其中私钥是保密不对外公开的,因为此算法既能够用于加密也能够用于签名,因此用途甚广,可是仍是会遇到一些问题:

(1) 假如我是一名黑客,虽然如今我不知道私钥,可是我能够先把客户端与服务器以前的传输数据(已加密)所有保存下来

(2)若是某一天,服务器维护人员不当心把私钥泄露了,或者服务器被我攻破获取到了私钥

(3)那我就能够利用这个私钥,破解掉以前已被我保存的数据,从中获取有用的信息

        因此为了防止上述现象发生,咱们必须保护好本身的私钥。

        若是私钥确实被泄漏了,那咱们改如何补救呢?那就须要PFS(perfect forward secrecy)彻底前向保密功能,此功能用于客户端与服务器交换对称密钥,起到前向保密的做用,也即就算私钥被泄漏,黑客也没法破解先前已加密的数据。

        实现此功能须要服务器支持如下算法和签名组合:

(1)ECDHE 密钥交换、RSA 签名;

(2)ECDHE 密钥交换、ECDSA 签名;

 

优化总结易记版:

一、HSTS重定向技术:将http自动转换为https,减小301重定向

二、TLS握手优化:在TLS握手完成前客户端就提早向服务器发送数据

三、会话标识符:服务器记录下与某客户端的会话ID,下次链接客户端发ID过来就能够直接用以前的私钥交流了

四、OSCP Stapling:服务器将带有 CA 机构签名的 OCSP 响应在握手时发给客户端,省的客户端再去CA查询

五、彻底前向加密PFS:使用更牛逼复杂的秘钥算法

 

 

部份内容参考:

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

https://www.cnblogs.com/xzwblog/p/6834663.html

https://segmentfault.com/p/1210000009272802/read原文:https://blog.csdn.net/qq_35642036/article/details/82788421 

相关文章
相关标签/搜索