HTTPS 再看一次


Https

https比http多了一个s,在网络层次上多了一层,即SSL/TLS,位于TCP之上,HTTP之下,也就是在发送http请求之前先进行一次安全验证,具体的流程是这样的:

握手阶段分为5步:

  1. 客户端给出协议号,一个客户端生成的随机数(client random),一级客户端支持的加密方法.
  2. 服务器确定双方使用的加密方法,并给出数据证书,以及一个服务器生成的随机数(Server random).
  3. 客户端确认数据证书有效,然后生成一个新的随机数(Premaster secret),并使用数据证书的公钥,加密这个随机数,发给服务器.
  4. 服务器使用自己的私钥,获取客户端发来的随机数(Premaster secret)
  5. 服务器和客户端根据约定的加密方法,使用前面的三个随机数,生成对话秘钥(session key),用来加密接下来整个对话过程

这个过程是简单的,重点在于上面标注的内容确认数据证书有效

确认证书有效

首先我们先知道证书是什么:
数字证书中包含了由某个受信任组织担保的用户或公司的相关信息,所有信息都是由一个官方的证书颁发结构(CA)以数字方式签发的,数字证书还包含对象的公开秘钥,以及对象和所用签名算法的描述性信息,任何人都可以创建一个数字证书,但并不是所有人都能获得被认可的,什么叫被认可?也就是很权威的机构颁发的,这样的证书,一般浏览器会预先安装其签名颁发的证书,拥有其公开秘钥.
我们还可以自制证书,与被认可的证书相比,就是浏览器可能无法需要提示你是不是信任这个证书.

验证证书有效其实有两个方面,一个方面是证书的颁发机构,过期时间等等,另一个就是这个身份验证.

身份认证的内容有待深究


  目录