从整体上理解ssl干了什么事情,证书又起什么作用。只关注功能流程,不关注细节实现(•̀⌄•́)
—— By Jihan
背景
本文目的
主要从整体流程上介绍ssl
的作用,证书
作用,从大体上对证书和ssl
有一定理解
背景知识
主要涉及
- 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秘钥交换
图片源于网络(具体引用路径忘了)
TIPS:
- 服务器中的公钥和私钥,主要用于协商生成随机秘钥(后续数据通信的对称秘钥)
- 此流程中,客户端会验证服务端发送的公钥,通常这个公钥就包含在我们常见的证书中。
- 此流程是常见的简单流程,涉及到双向校验等更复杂的流程,可自行研究。
那么这里的公钥,即证书是怎么颁发的呢?证书结构如何呢?
这就涉及到我们第二个内容
证书
证书作用
- 保证你网络上访问的地址,是真实的服务器,而不是伪造的。比如你访问
www.baidu.com
时,是真正访问的百度,而不是其他的伪造网站。 - 这里有一个
PY
交易,即你的浏览器或电脑上有很多内置的权威根CA证书,只要你访问的网站,返回证书是这个根证书下颁发的,则是可信的。如果不在这个列表里,则需要你导入证书。比如你可以在windows
上看到(win+R
执行certmgr.msc
):
证书颁发
- 证书颁发机构:是一家知名且受信任的组织,它对网站进行验证以确保互联网更安全。
- CA证书:CA机构颁发的证明,是一种数字证书。它包含了公钥、公钥拥有者名称、CA的数字签名、有效期、授权中心名称、证书序列号等信息。我们可以通俗的理解为数字证书是个人或企业在网络上的身份证。
- 申请CA证书:为保障申请CA证书的是真实合法的机构。申请时需要一系列的文件,比如:营业执照、身份证、公司法人身份证、诚信承诺书、公司公章及法人章印模等。
- 数字证书签名原理:同样使用的是非对称加密算法,每个数字证书都包含证书信息和公私钥对
图片来源 - 证书链及域名证书:CA证书下可以签发一系列的子证书及域名证书,形成证书链。本质上,你申请的CA证书也是子证书。
图片来源
证书结构
一个证书中包含:
- 基本字段
- 版本:目前主流的证书版本是V3
- 序列号:证书颁发机构CA分配给证书的唯一标识
- 签名算法:用于签名的哈希算法和数字签名算法
- 签名哈希算法:用于签名的哈希算法
- 颁发者:证书颁发机构CA的详细信息
- 有效期:证书生效日期和失效日期
- 使用者:证书使用者的详细信息
- 公钥:公钥密码算法、密钥长度和使用者公钥内容
- 扩展字段
- 证书签名
图片来源
证书校验
至此,基本明确了ssl+证书是如何工作了。对其中细节想有更深入了解,可自行研究。
参考链接
一篇文章让你彻底弄懂SSL/TLS协议
加解密篇 - 非对称加密算法 (RSA、DSA、ECC、DH)
证书链-证书校验
HTTPS 精读之 TLS 证书校验
数字签名和数字证书的原理解读
Digital Certificates
Chain of trust