HTTPS与HTTP

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

      为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了安全套接字层超文本传输协议HTTPS。

一、HTTP和HTTPS的基本概念   

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

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

二、HTTPS连接的全过程?

      为了搞懂HTTPS到底有啥不一样,我们看一下HTTPS连接的全过程。


 

      在这之前,了解一些必要知识。

1.1 加密算法

(1)对称加密算法:加密使用的密钥和解密使用的密钥是相同的,不区分公钥和私钥。

(2)非对称加密算法:加密使用的密钥和解密使用的密钥是不相同的。例如公钥密码体制就是一种非对称加密算法。

1.2 公钥密码体制

加密:通过加密算法和公钥对内容(或者说明文)进行加密,得到密文。

解密:通过解密算法和私钥对密文进行解密,得到明文。

只有对应的公钥才能解密私钥加密的内容,也只有对应的私钥才能解密公钥加密的内容。

1.3 数字证书

  • 证书的发布机构 
  • 证书的有效期 
  • 公钥 
  • 证书所有者(Subject) 
  • 签名所使用的算法 
  • 指纹以及指纹算法

数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者说证书可以用来确认对方的身份。 


 

了解了这些,我们还要解决几个难题。

      公钥密码体制中,公钥和算法都是公开的,私钥是服务端自己私有保密的。因此客户端都以使用公钥进行加密,但是只有私钥的持有者服务端才能解密。客户端发送给服务端的加密内容是安全的,但是服务端发送给某个客户端的信息却是暴露出来的,因为只要有对应的公钥就可以解密。这种情况下,对称加密解密算法就派上用场了,只需要客户端自己生成一个密钥,用服务端的公钥加密以后发给服务端,服务端收到以后用私钥解密。这之后,他们之间的交流都使用这个密钥进行对称加密解密。

      在最开始服务端给客户端派发公钥时,客户端如何确认此公钥来自服务端?数字证书粉墨登场。


 

主要过程描述如下:

1、客户端发起HTTPS请求 

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

3、服务端将证书传送给客户端 

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

4、客户端验证证书 

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等。如果发现异常,则会弹出一个警告框,提示证书存在问题;如果证书没有问题,那么就生成一个随即值。然后用证书的公钥对该随机值进行加密。

5、传送加密信息 

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

6、服务端解密信息 

服务端用私钥解密后,得到了客户端传过来的随机值;

服务端开始传输,把内容通过该值进行对称加密。

7、传输加密后的信息 

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

8、客户端解密信息 

客户端用之前生成的随机值解密服务段传过来的信息,于是获取了解密后的内容。 

二、HTTPS和HTTP有啥区别?

1、https协议需要到ca申请证书。

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

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

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

猜你喜欢

转载自www.cnblogs.com/kikis/p/9771904.html