SSL体系理解

从整体上理解ssl干了什么事情,证书又起什么作用。只关注功能流程,不关注细节实现(•̀⌄•́)
                              —— By Jihan


背景

本文目的

主要从整体流程上介绍ssl的作用,证书作用,从大体上对证书和ssl有一定理解

背景知识

  1. 基础网络知识,类似TCP/IP
  2. 常见加密算法类型,了解对称加密非对称加密

主要涉及

  • SSL: 主要用于加密鉴别
  • 使用场景: 常见基于TCP协议上,使用TCP+SSL协议构成TLS协议。基于TLS上传输HTTP报文行程了HTTPS
  • RSA: 非对称加密的一种算法,主要用于SSL中报文私钥的生成。
  • 证书: 主要用于SSL握手中对对方身份的鉴别

HTTPS的握手流程

HTTPS本质是在TLS上传输数据,那么从通信开始,到正式传输数据要经历三个阶段:

graph TD
A(TCP 3次握手)
B(RSA秘钥交换)
C(用秘钥加密数据)
A --> B
B -- 生成对称秘钥 --> C

classDef orange fill:#f96,stroke:#333,stroke-width:4px;
class B orange

TIPS:
问: 为何要用RSA秘钥交换
答:非对称加密算法的保密性好,不需要交换秘钥

问:为何用对称秘钥加密数据通信
答:因为快

其中关键的一步就是RSA秘钥交换
HTTPS流程
图片源于网络(具体引用路径忘了)

TIPS:

  1. 服务器中的公钥和私钥,主要用于协商生成随机秘钥(后续数据通信的对称秘钥)
  2. 此流程中,客户端会验证服务端发送的公钥,通常这个公钥就包含在我们常见的证书中。
  3. 此流程是常见的简单流程,涉及到双向校验等更复杂的流程,可自行研究。

那么这里的公钥,即证书是怎么颁发的呢?证书结构如何呢?
这就涉及到我们第二个内容

证书

证书作用

  1. 保证你网络上访问的地址,是真实的服务器,而不是伪造的。比如你访问www.baidu.com时,是真正访问的百度,而不是其他的伪造网站。
  2. 这里有一个PY交易,即你的浏览器或电脑上有很多内置的权威根CA证书,只要你访问的网站,返回证书是这个根证书下颁发的,则是可信的。如果不在这个列表里,则需要你导入证书。比如你可以在windows上看到(win+R执行certmgr.msc):

证书颁发

  • 证书颁发机构:是一家知名且受信任的组织,它对网站进行验证以确保互联网更安全。
  • CA证书:CA机构颁发的证明,是一种数字证书。它包含了公钥、公钥拥有者名称、CA的数字签名、有效期、授权中心名称、证书序列号等信息。我们可以通俗的理解为数字证书是个人或企业在网络上的身份证。
  • 申请CA证书:为保障申请CA证书的是真实合法的机构。申请时需要一系列的文件,比如:营业执照、身份证、公司法人身份证、诚信承诺书、公司公章及法人章印模等。
  • 数字证书签名原理:同样使用的是非对称加密算法,每个数字证书都包含证书信息和公私钥对

    图片来源
  • 证书链及域名证书:CA证书下可以签发一系列的子证书及域名证书,形成证书链。本质上,你申请的CA证书也是子证书。
    证书链
    图片来源

证书结构

一个证书中包含:

  1. 基本字段
    • 版本:目前主流的证书版本是V3
    • 序列号:证书颁发机构CA分配给证书的唯一标识
    • 签名算法:用于签名的哈希算法和数字签名算法
    • 签名哈希算法:用于签名的哈希算法
    • 颁发者:证书颁发机构CA的详细信息
    • 有效期:证书生效日期和失效日期
    • 使用者:证书使用者的详细信息
    • 公钥:公钥密码算法、密钥长度和使用者公钥内容
  2. 扩展字段
  3. 证书签名

    图片来源

证书校验

  1. 只要你上级证书可信,你就可信。不然一直向上追溯,直到浏览器或系统的证书列表,可参考证书链-证书校验
  2. 当前证书校验:将证书信息计算hash,是否等于指纹通过公钥计算得到的hash值。

    图片来源

至此,基本明确了ssl+证书是如何工作了。对其中细节想有更深入了解,可自行研究。

参考链接

一篇文章让你彻底弄懂SSL/TLS协议
加解密篇 - 非对称加密算法 (RSA、DSA、ECC、DH)
证书链-证书校验
HTTPS 精读之 TLS 证书校验
数字签名和数字证书的原理解读
Digital Certificates
Chain of trust

-------------本文结束感谢您的阅读-------------