https协议详解

前言

HTTPS (Hypertext Transfer Protocol Secure) 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。在
HTTPS 中,原有的 HTTP 协议会得到 TLS (安全传输层协议) 或其前辈 SSL (安全套接层) 的加密。因此 HTTPS 也常指 HTTP over
TLS 或 HTTP over SSL。

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议是HTTP的安全版。HTTP协议有以下的缺点:

  1. 通信使用明文,内容可能会被窃听。
  2. 无法验证报文的完整性,所以有可能遭到篡改。
  3. 不验证通信方的身份,有可能遭遇伪装。

http和https的区别:

  • https协议需要到ca申请证书。
  • http是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,端口也不一样。前者是80,后者是443.
  • http的连接是无状态的,https协议是由SSL+http协议构建的可进行加密传输、身份认证的网络协议,比http更安全。

关于https

https目前是最流行的http安全形式。使用https时,所有的http请求和响应数据在发送到网络之前,都要进行加密。https在http下面提供了一个传输级的密码安全层:SSL和TLS。现在不太严格地用术语SSL来表示SSL和TLS。

006ozJEaly1ghmxkx0s5yj30it06xdgu.jpg

SSL TLS

SSL/TLS协议为了解决http协议的缺点,希望达到:

  • 所有信息都是加密传播,第三方无法被窃听。
  • 具有校验机制,一旦被篡改,通信双方立刻会发现。
  • 配备身份证书,方式身份被冒充。

SSL是一个二进制协议,与http完全不同,其流量是承载在另一个端口上的(通常是443).如果SSL和http的流量都从80端口到达,大部分web服务器会将二进制SSL流量理解为错误的http并关闭连接。

SSL证书

在服务器向客户端发送公钥这一过程中,客户端可能会收到黑客假冒服务器发送的假的公钥。为了安全考虑,就需要用到SSL证书了。在通信时,服务器将证书发送给客户端,客户端会对证书的真伪进行校验,保证了安全。

SSL证书包含的具体内容有:

  • 证书的发布机构CA
  • 证书的有效期
  • 公钥
  • 证书所有者
  • 签名

https的通信过程

https的整个通信过程可以分为两大类:证书验证和数据传输阶段。数据传输阶段又分为非对称加密和对称加密两个阶段。

具体流程如下:

  1. 客户端请求https网址,然后连接到server的443端口(https默认端口)。
  2. 采用https协议的服务器必须要有一套数字CA证书。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则附加在证书中,可以公开。证书本身附带一个电子签名,可以用来验证证书的完整性和真实性,可以防止证书被篡改。
  3. 服务器响应客户端请求,将证书传递给客户端。证书包含公钥和大量其他的信息,比如证书颁发机构信息、公司信息和证书有效期等。
  4. 客户端解析证书并对其进行验证,如果证书不是可信的机构颁布,或者证书的域名与实际域名不一致,或证书已经过期,就会向访问者显示一个警告。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A,并生成一个随机码KEY,并使用公钥对其进行加密。
  5. 客户端会把加密后的随机码KEY发送给服务器,作为后面对称加密的密钥。
  6. 服务器在收到随机码KEY之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全的连接,接下来可以使用对称加密进行通信了。
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥解密数据。
  8. 双方使用对称加密传输所有的数据。

006ozJEaly1ghp83gtxjfj30jl0cl412.jpg

https的缺点

  • 在相同网络环境下,https比http的响应时间和耗费的服务器资源更多,因为需要交换更多的数据。
  • 在现有的证书机制下,中间人攻击依旧有可能发生。
  • https的安全是有范围的,在服务器劫持等情况下几乎起不到作用。
posted @ 2021-03-13 16:33  皆守  阅读(1831)  评论(0)    收藏  举报