HTTPS/TLS/SSL 都是什么,有什么区别?

HTTPS/TLS/SSL

名称 简介
HTTPS 全称:Hyper Text Transfer Protocol over Secure Socket Layer,主要由两部分组成: HTTP + SSL/TLS ,简单说就是传输安全的 HTTP,在 HHTP 的基础上加了一层处理加密信息的模块。
SSL 全称:Secure Socket Layer,用于网络连接安全,在浏览器和服务器之间构造安全通道来进行数据传输,防止数据传输过程中的敏感信息被窃取,可以看作是网站的身份证。
TLS 全称:Transport Layer Security,是 SSL 的升级版,它修复了早期 SSL 协议中的一些安全漏洞(由于 SSL 这一术语更常用,所以现在我们仍然将 TLS 证书叫做 SSL 证书)。

SSLTLS 的历史版本:

  • SSL 1.0 – 由于安全问题从未公开发布。
  • SSL 2.0 – 1995年发布。2011年弃用。存在已知的安全问题。
  • SSL 3.0 – 1996年发布。2015年弃用。存在已知的安全问题。
  • TLS 1.0 – 1999年作为SSL 3.0的升级发布。计划在2020年弃用。
  • TLS 1.1 – 2006年发布。计划在2020年弃用。
  • TLS 1.2 – 2008年发布。
  • TLS 1.3 – 2018年发布。

一般我们新购买的证书都是最新的 TLS 证书。

HTTPS 工作原理

HTTPS 在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL 协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL 中使用了非对称加密,对称加密以及 HASH 算法。

  1. 浏览器发送自己支持的一套加密规则给网站
  2. 网站从支持的规则种选出一套加密算法与哈希算法,并将自己的身份信息以证书的方式传回给浏览器。证书包括网站地址,加密公钥,以及证书的颁发机构等信息。
  3. 浏览器获取到网站证书后要做以下工作:a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 c) 使用约定好的 HASH 算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
  4. 服务器收到数据后要做以下操作: a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证 HASH 是否与浏览器发来的一致。 b) 使用密码加密一段握手消息,发送给浏览器。
  5. 浏览器解密并计算握手消息的 HASH,如果与服务端发来的 HASH 一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

浏览器证书列表中的证书是怎么来的?

证书都是由 CACertificate Authority,证书认证机构)签名的,CA 就是网络世界里的公安局、公证中心,具有极高的可信度,所以由它来给各个公钥签名,信任的一方签发的证书,那必然证书也是被信任的。

我们自己申请的证书一般都不是根证书,因为太贵了,会有很多中间证书机构生成中间证书。证书是有链式关系的,根证书->中间证书->中间证书->…。浏览器在验证证书的时候,会一级级的向上认证,所有的证书都是受信任的,这个验证才受信任。

总结

  • SSL 是基于 HTTP 之下 TCP 之上的一个协议层,是基于 HTTP 标准并对 TCP 传输数据时进行加密,所以 HPPTSHTTP+SSL/TLS 的简称。TLS 可以看作是 SSL 的升级,现在用的基本上都是 TLS 证书,但是由于历史习惯,还是会叫做 SSL 证书。

  • HTTPS 的工作流程还是比较复杂的,为了安全着想,设计者们也是花了大心思的。

  • SSL 根证书的颁发机构 CA 是公认的证书颁发机构,可信度高。证书是链式的,链越多,则认证时间越长,一般证书三四层链。

参考

猜你喜欢

转载自blog.csdn.net/DisMisPres/article/details/127600002