HTTPS简介

By | 10月 8, 2021

1. 什么是https

HTTPS叫做Hyper Text Transfer Protocol Secure,它是一种安全的超文本传输协议。下面的图片对比了http和https的区别。

https-communication

可以看到,http传输的是明文数据,而https传输的是加密数据,因此https可以防止黑客读取和修改传输的数据。https在客户端和服务器之间建立了一个加密连接,这个加密连接使用Secure Socket Layer (SSL)协议或Transport Layer Security(TLS)协议。

  • SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。
  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1.

1.2 Secure Socket Layer(SSL)

SSL是标准的加密传输协议,https本质上是通过SSL传输http。通过SSL证书,SSL在客户端和服务器之间建立一个加密连接,SSL证书也被称为数字签名。

ssl-link

1.3 http和https的区别

http https
传输明文数据 传输加密数据
默认是80端口 默认是443端口
不安全 SSL安全协议
url以 http:// 开头 url以 https:// 开头

1.4 https的优点

  • 安全传输:客户端和服务器之间建立一个加密的连接。
  • 数据完整性:因为数据是加密的,所以即使黑客截取了信息,也无法读取数据或者修改伪造数据。
  • 传输更快:相对手动加密数据然后通过http传输,https传输的数据更小,更快。
  • SEO:提升网站的SEO排名。
  • 未来:https是网络传输的未来,越来越多网络传输都从http转到https。

2. SSL是如何工作的

SSL传递数据的两个基本概念:

  1. Asymmetric Cryptography:非对称加密
  2. Symmetric Cryptography:对称加密

2.1 Asymmetric Cryptography

Asymmetric Cryptography(非对称加密),它有两个密钥:公钥和私钥。私钥是保密的,公钥是公开的。用其中的一个密钥加密的数据,只能用对应的配对密钥解密。

asymmetric-cryptography

SSL使用非对称加密发起连接,被称为SSL握手,握手成功就建立连接。常用的非对称加密算法有:EIGamal, RSA, DSA, Elliptic curve techniques 和 PKCS。

2.2 Symmetric Cryptography

Symmetric Cryptography(对称加密)的加密过程和解密过程使用同一个密钥。

symmetric-cryptography

SSL握手成功后,客户端和服务器端都会拿到当前的session key。这个session key就是它们通讯的密钥,SSL使用这个session key对称加密、解密客户端和服务器端之间的数据。常用的对称加密算法有:AES-128, AES-192 和 AES-256。

2.3 https通过SSL发送数据

https连接分为两步:先SSL握手,然后传递数据。

ssl-communication

2.4 SSL握手

SSL握手,是为了验证server,然后把session key安全的发给server。

ssl-handshack

  1. 客户端给服务器发送一个消息,包含客户端的SSL版本,密码设置以及session数据。
  2. 服务器返回消息,包含server的SSL版本,密码配置,包含公钥的SSL证书文件以及session数据。
  3. 客户端通过公钥验证服务器,如果验证失败则抛出错误,连接失败;如果认证成功,进入第4步。
  4. 客户端创建一个session key,使用SSL证书的公钥加密session key,然后发送给服务器。
  5. 服务器使用SSL证书的私钥解密session key,然后服务器使用session key加密并发送一个应答消息,告知客户端我们可以通讯了。

2.5 真实的数据传输

SSL握手之后,客户端和服务器都拥有session key,之后的数据传输都是通过session key加密和解密,SSL证书中的公钥和私钥就没用了。使用对称加密(session key)传输数据的原因是:相对于非对称加密,对称加密简单,速度快,消耗更少的计算资源。

ssl-data-transfer

3. 参考