6

HTTPS 简介

 3 years ago
source link: http://blog.danthought.com/programming/2020/09/02/networking-https-basic/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文是对 HTTPS 运行机制的整理,便于记忆。

Networking

HTTP 的缺点

  • 通信使用明文(不加密),内容可能会被窃听。
  • 不验证通信方的身份,因此有可能遭遇伪装。
  • 无法证明报文的完整性,所以有可能已遭篡改。

HTTPS 的运行机制

HTTPS 是身披 SSL 外壳的 HTTP

HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。

HTTP SSL

近代的加密方法中加密算法是公开的,而密钥却是保密的。

  • 对称加密、共享密钥加密:加密和解密同用一个密钥的方式称为共享密钥加密。
  • 非对称加密、公开密钥加密:公开密钥加密使用一对非对称的密钥,一把叫做私有密钥,另一把叫做公开密钥,使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。

用于证明公开密钥正确性的证书。

Certificate

SSL 协议的握手过程

SSL Handshake

假定客户端叫做爱丽丝,服务器叫做鲍勃:

  1. 爱丽丝给出协议版本号、一个客户端生成的随机数 Client Random,以及客户端支持的加密方法。
  2. 鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数 Server Random。
  3. 爱丽丝确认数字证书有效,然后生成一个新的随机数 Premaster Secret,并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
  4. 鲍勃使用自己的私钥,获取爱丽丝发来的随机数,即 Premaster Secret。
  5. 爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成 “对话密钥” Session Key,用来加密接下来的整个对话过程。
  • 生成对话密钥一共需要三个随机数。
  • 握手之后的对话使用 “对话密钥” 加密,是对称加密,服务器的公钥和私钥只用于加密和解密 “对话密钥”,是非对称加密,无其他作用。
  • 服务器公钥放在服务器的数字证书之中。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK