zoukankan      html  css  js  c++  java
  • 通信—HTTP与HTTPS

    HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    HTTP与HTTPS有什么区别?

      HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对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利用了两者的优势,采用了混合加密的机制。我们知道,共享(对称)密钥未能解决的问题是如何能够安全地把密钥发送给对方。只要解决了这个问题就可以进行安全地通信。于是,HTTPS首先是通过公有密钥来对共享密钥进行加密传输。当共享密钥安全地传输给对方后,双方则使用共享密钥的方式来加密报文,以此来提高传输的效率。

    HTTPS的握手机制 


    步骤1:向服务器发起请求。
    步骤2-3:取出公有密钥及证书并发送给客户端。
    步骤4:客户端判断公有密钥是否有效,无效则显示警告。有效则生成一个随机数串,并以此生成客户端的共享密钥
    步骤5:用步骤3得到的公有密钥对该随机数串加密,发送到服务器。
    步骤6:服务器得到加密报文,用私有密钥解密报文,得到随机数串,并以此生成服务器端的共享密钥。此时客户端和服务端拥有相同的共享密钥,可以用该共享密钥进行安全通信。
    步骤7-8:服务器对响应进行加密,客户端对报文进行解密。

    选择HTTP还是HTTPS来搭建服务器

    在比较之前,首先要了解HTTPS存在的问题才能进行权衡。

    SSL会使通信的效率降低

    • 通信速率降低
      HTTPS 除了TCP连接,发送请求,响应之外,还需要进行SSL通信。整体通信信息量增加。
    • 加密过程消耗资源
      每个报文都需要进行加密和解密的运算处理。比起HTTP会消耗更多的服务器资源。
    • 证书开销
      如果想要通过HTTPS进行通信,就必须向认证机构购买证书。

    基于以上三点,如果通信中传输的是非敏感的信息,则会较多地选择HTTP协议。而当通信过程中会涉及个人隐私或其他安全信息时,则会选择用HTTPS。当然,访问量也是考虑的因素之一,如果访问量很大,而每个报文都进行加密解密,也会给服务器带来很大的负担。

     
     


    参考:
  • 相关阅读:
    北风设计模式课程---单一职责原则
    北风设计模式课程---访问者模式(Visitor)
    北风设计模式课程---访问者(Visitor)模式
    北风设计模式课程---命令模式
    社交专题---3、装逼的那些事儿
    社交专题---2、男生的套路有多深
    MHA 日常管理
    【屌丝程序的口才逆袭演讲稿50篇】第十篇:程序猿们请看看外面的世界吧【张振华.Jack】
    Win32 Windows编程 九
    java实现大数相加问题
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/9579082.html
Copyright © 2011-2022 走看看