本文对https的全生命周期做一个整体的讲解,让大家对https建连有一个比较全面的认识。
咱们按时间顺序分三部分来讲,分别是数字证书申请、https建连、请求/响应数据传输与解析。
先说数字证书申请,这里的数字证书即咱们访问https网站时,浏览器地址栏里那个小锁子点开后看到的证书,一般是一个多级的证书链,类似图1-1中所示。
图1-1
这种证书需要到证书颁发机构(CA)那里提交网站信息(网站名称、域名、公钥)等信息,颁发机构审核通过后,用自己的私钥生成数字证书给到申请人(.pem文件)。再由申请人配置到自己的web服务器中的web服务指定的目录下。
接下来讲https建连,这里也可以分为三个步骤:建立传输通道、验证证书有效性、约定并同步加密秘钥。
建立传输通道是指通过三次握手和服务端建立好TCP链接,以提供数据传输。
验证证书有效性是指建立TCP链接后浏览器要验证从服务端获取的证书是否是真实有效的。
具体过程是浏览器发送自己支持的加密算法给服务端,服务端确认客户端支持自己的公钥对应的算法后,将公钥和证书一并发给客户端,这个证书是一个以顶级CA证书垫底的证书链。证书链中的每一级证书都包含了公钥、颁发机构、使用机构、签名算法、指纹算法、指纹等信息,使用上一级公钥对证书进行解密可以获得证书的元数据和证书的加密后的数字摘要数据,使用同样的hash算法计算得到该证书的数字摘要数据