Https基本原理

本文介绍Https的基本原理,什么是CA,浏览器/JDK等客户端工具如何进行证书验证等。

在讲解HTTPs之前,需要明确以下几个概念

  • SSL
  • 对称加密
  • 非对称加密

HTTPs采用的非对称加密加对称加密的方式来实现加密服务的。以下是一个简单的HTTPs加密工作流程图。

Https基本原理

我们这里先讲解一个简单的流程,不对证书、CA、自签、CA验证等环节做任何解释,这样便于理解,免去旁支的解释描述。

首先,如果一个WEB服务端,要能够支持HTTPs加密传输,就要有自己的秘钥,包括私钥、证书等。这些信息是存储在WEB服务器的一些目录中(具体目录大家可以根据不同的WEB服务器自行检索或者上网搜索资料)

从上图可以看出,

  1. 首先一个请求发送到server端(这个请求是一个客户端发送的,该客户端可能是各种厂家出品的浏览器,也可能是一些其它的可以用于进行http访问的客户端,例如JRE/JDK。
  2. 服务端收到访问请求后,会将自己证书库中的证书作为回应发送给客户端(当然这里的请求时经过服务端前期过滤的,例如IP等)
  3. 客户端收到证书后,会对证书进行验证,得知证书是否为合法证书,并提取证书中的公钥。
  4.