详解http和https的做用与区别(前端面试题常考)

PS: https就是http和TCP之间有一层SSL层,这一层的实际做用是防止钓鱼和加密。防止钓鱼经过网站的证书,网站必须有CA证书,证书相似于一个解密的签名。另外是加密,加密须要一个密钥交换算法,双方经过交换后的密钥加解密。算法

 

http与https有什么区别呢?本文详解http和https的区别。浏览器

      只要上过网的朋友必定接触过“HTTP”,每次开网页的时候,不论是什么网址,其前面都会出现HTTP字样,好比 “http://www.jzxue.com”、“http://62.135.5.7”等等,而有些时候打开如银行等对安全性要求很高的网站的时候其网 址的前缀又会变做“https”,这两个前缀究竟是什么意思?有什么做用呢?相信不少用户朋友对此并不了解。下面就由我给你们解释一二。安全

      http的全称是Hypertext Transfer Protocol Vertion (超文本传输协议),说通俗点就是用网络连接传输文本信息的协议,咱们如今所看的各种网页就是这个东东。每次开网页时为何要出现“http://”呢? 其实这个道理很是简单,由于你要得到网络上超文本信息,那么你确定要遵循其超文本传输的规范,就如同你是“天地会”成员,你和其余“天地会”成员接头时首 先要说出“地震高岗,一派西山千古秀!”和“门朝大海,三合河水万年流”这样的接头暗号,说出后才能和会友进行沟通。因此每次开网页出现的 “http://”就如同上面所讲的接头暗号,当暗号正确后才能得到相关信息。服务器

      看完了上面的解释,或许你已经懂得是为何每次开网页时要出现“http”了。那么接下来咱们再谈谈为何有时候网页的接头暗号又会变做“https”呢?网络

      HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增长了使用SSL加密传送信息的协议。咱们仍是用天地会接头的例子来说,你们可能以为每 次天地会接头都是使用“地震高岗,一派西山千古秀!”这类妇孺皆知的接头暗号,这样的组织还有什么安全性可言?只要说出了暗号那么就可能得到天地会的相关 秘密。事实上并非这样的,若是仅仅是靠一个妇孺皆知的接头暗号进行信息保密,天地会可能早被清兵围剿了,何来那么多传奇故事呢?他们之间的交流除了使用 了接头暗号外,可能仍是用了“黑话”,就是一些仅仅只有天地会成员才能听懂的黑话,这样即便天地会成员之间的交谈信息被泄露出去了,没有相关揭秘的东西, 谁也不会知道这些黑话是什么?一样HTTPS协议就如同上面天地会的信息交谈同样,它也将本身须要传输的超文本协议经过SSL加密,让明文变成了“黑话” 即便传输的信息被人捕获,捕获的人也没办法知道其实际内容。网站

      因此http和https之间的区别就在于其传输的内容是否加密和是不是开发性的内容。这也是你为何经常看见https开头的网址都是一些相似银行网站的这类网址的缘由。加密

      下面是http和https的概念server

      什么是HTTPS: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议。ssl

      它是一个安全通讯通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来讲它是HTTP的 安全版。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操做,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安 全全套接字层(SSL)做为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通讯。)SSL使 用40 位关键字做为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,若是须要的话用户能够确认发送者是谁。开发

      HTTPS和HTTP的区别:

      https协议须要到ca申请证书,通常免费证书不多,须要交费。

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

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

      http的链接很简单,是无状态的。

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

      HTTPS解决的问题:

      1 . 信任主机的问题. 采用https 的server 必须从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)Alice与Bob肯定两个大素数n和g,这两个数不用保密

(2)Alice选择另外一个大随机数x,并计算A以下:A=gx mod n

(3)Alice将A发给Bob

(4)Bob  选择另外一个大随机数y,并计算B以下:B=gy mod n

(5)Bob将B发给Alice

(6)计算秘密密钥K1以下:K1=Bx mod n

(7)计算秘密密钥K2以下:K2=Ay mod n

  K1=K2,所以Alice和Bob能够用其进行加解密

RSA加密算法是基于这样的数学事实:两个大素数相乘容易,而对获得的乘积求因子则很难。加密过程以下:

(1)选择两个大素数P、Q (2)计算N=P*Q (3)选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子 (4)选择私钥(解密密钥)D,知足以下条件: (D*E) mod (P-1)(Q-1)=1 (5)加密时,明文PT计算密文CT以下: CT=PTE mod N (6)解密时,从密文CT计算明文PT以下: PT=CTDmodN 这也是SSL中会用一种密钥交换算法。

相关文章
相关标签/搜索