【计网】HTTPS详解

引入

之前介绍了HTTP协议,但它并不是完美的,因为它有以下几个缺点

  • 通信使用明文( 不加密) , 内容可能会被窃听

  • 不验证通信方的身份, 因此有可能遭遇伪装

  • 无法证明报文的完整性, 所以有可能已遭篡改

  • 无法确定请求发送至目标的 Web 服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的 Web 服务器。

  • 无法确定响应返回到的客户端是否是按真实意图接收响应的那个客户端。有可能是已伪装的客户端。

  • 无法确定正在通信的对方是否具备访问权限。因为某些Web 服务器上保存着重要的信息, 只想发给特定用户通信的权限。

  • 即使是无意义的请求也会照单全收。无法阻止海量请求下的DoS 攻击( Denial of Service, 拒绝服务攻击) 。

所以,更加安全的HTTPS协议应运而生,下面我来具体介绍HTTPS协议。

HTTPS 协议概述

  • HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,是在http协议基础上增加了使用TLS/SSL加密传送信息的协议。是HTTP的 安全版,HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的。

  • TLS 是传输层加密协议,它的前身是 SSL 协议,最早由 netscape 公司于 1995 年发布,1999 年经过 IETF 讨论和规范后,改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

  • HTTPS使用端口443,而不是使用HTTP的端口80来和TCP/IP进行通信,SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的,详情:SSL/TLS 协议详解

HTTPS加密解密过程

【计网】HTTPS详解

1.客户端发起HTTPS请求

用户在浏览器里输入一个https网址,然后连接到server的443端口。
  
2.服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,

使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥。可以比喻为一把锁和一把钥匙,只是全世界只有你一个人有这把钥匙,你可以把锁给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。

3.传送证书

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

4.客户端解析证书

这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁 锁起来,这样除非有钥匙,不然看不到被锁住的内容。

5.传送加密信息

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

6.服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

7.传输加密后的信息

这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
  
8.客户端解密信息

客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

HTTPS解决的问题

1.信任主机的问题

  • 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机。

  • 客户通过信任该证书,从而信任了该主机,其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何意义,我们的server 采用的证书不管自己issue 还是从公众的地方issue,客户端都是自己人,所以我们也就肯定信任该server。

2 . 通讯过程中的数据的泄密和被窜改

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

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

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

HTTPS和HTTP的区别

  • https协议需要到ca申请证书,一般免费证书很少,需要交费。

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

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

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

  • http的连接很简单,是无状态的。https虽然是安全的,但需要加密解密等过程,所以更消耗性能。



本人才疏学浅,若有错,请指出
谢谢!

参考资料:
1.Https完全协议详解
2.浅析 HTTPS 与 SSL 原理