zoukankan      html  css  js  c++  java
  • Http请求和Https请求的区别

    HTTP(Hypertext Transfer Protocol Vertion )超文本传输协议,被用于在web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截获了传输报文,就可以读取内容,所以不建议传输一些敏感信息。

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

    每次开网页时为什么要出现“http://”呢? 其实这个道理非常简单,因为你要获得网络上超文本信息,那么你肯定要遵循其超文本传输的规范。

    基本概念:

           HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

           HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

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

    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方式与web服务器通信时有以下几个步骤:

    (1)客户端使用HTTPS的URL访问web服务器,要求与web服务器建立SSL连接

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

    (3)客户端与服务器之开始协商SSL连接的安全等级,也就是信息加密的等级

    (4)客户端根据双方同意的安全等级,建立会话密钥,然后利用公钥对会话密钥加密,并传送给服务器

    (5)服务器利用自己的私钥解密出会话密钥

    (6)服务器利用会话密钥与客户端进行通信

    HTTPS的优缺点:

    优点:是加密传输、身份认证的网络协议,比HTTP安全,防止数据在传输过程中被窃取、改变,确保完整性。增加攻击成本。

    缺点:不是绝对安全,加密范围有限、握手阶段比较费时、增加耗电、不如HTTP高效、需要花钱、通常需要绑定ip

     

     HTTPS解决的问题:

          1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书(CA证书:这里的证书类似于解密的一个签名). 改证书只有用于对应的server 的时候,客户度才信任次主机。所以目前所有的银行系统网站,关键部分应用都是https 的,客户通过信任该证书,从而信任了该主机,其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的server 采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server。
     
          2 . 通讯过程中的数据的泄密和被窜改

          1)一般意义上的https, 就是 server 有一个证书.

          a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.

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

          i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥,一般意义上的握手过程。
     
          ii. 加下来所有的信息往来就都是加密的,第三方即使截获,也没有任何意义,因为他没有密钥,当然窜改也就没有什么意义了。
     
          2)少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
     
          a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份,个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份。
     
          b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体。

    密钥交换算法:

          使用对称加密算法时,密钥交换是个大难题,所以Diffie和Hellman提出了著名的Diffie-Hellman密钥交换算法。

         Diffie-Hellman密钥交换算法原理:

     1 (1)Alice与Bob确定两个大素数n和g,这两个数不用保密
     2 
     3 (2)Alice选择另一个大随机数x,并计算A如下:A=g^x mod n
     4 
     5 (3)Alice将A发给Bob
     6 
     7 (4)Bob  选择另一个大随机数y,并计算B如下:B=g^y mod n
     8 
     9 (5)Bob将B发给Alice
    10 
    11 (6)计算秘密密钥K1如下:K1=B^x mod n
    12 
    13 (7)计算秘密密钥K2如下:K2=A^y mod n
    14 
    15   K1=K2,因此Alice和Bob可以用其进行加解密
  • 相关阅读:
    java的类加载机制
    tomcat jar包加载顺序
    重构 改善代码的既有设计
    ecilipse Javadoc文档注释
    常用HQL(Hibernate Query Language)查询
    在hibernate中查询单个对象的方法,get()、load()、
    hibernate -- HQL语句总结
    复杂的1秒--图解Google搜索技术
    作业-树状结构设计
    left join 和 left outer join 的区别
  • 原文地址:https://www.cnblogs.com/vegetableDD/p/11674763.html
Copyright © 2011-2022 走看看