Skip to content

Commit

Permalink
Upload new file: CA 证书详解.md via simpread
Browse files Browse the repository at this point in the history
  • Loading branch information
cubxxw committed Feb 16, 2023
1 parent caad740 commit 2b9699a
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions excerpt/CA 证书详解.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/267047441)
**SSL 如何保证网络通信的安全和数据的完整性呢?就是采用了两种手段:身份认证和数据加密。身份认证就需要用到 CA 证书**

_CA 是证书的签发机构,它是公钥基础设施(Public Key Infrastructure,PKI)的核心。CA 是负责签发证书、认证证书、管理已颁发证书的机关。_

_CA 拥有一个证书(内含[公钥](https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/%25E5%2585%25AC%25E9%2592%25A5/6447788)[私钥](https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/%25E7%25A7%2581%25E9%2592%25A5/8973452))。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。_

_证书的内容包括:[电子签证机关](https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/%25E7%2594%25B5%25E5%25AD%2590%25E7%25AD%25BE%25E8%25AF%2581%25E6%259C%25BA%25E5%2585%25B3/3344153)的信息、[公钥](https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/%25E5%2585%25AC%25E9%2592%25A5/6447788)用户信息、公钥、权威机构的签字和有效期等等。证书的格式和验证方法普遍遵循 [X.509](https://link.zhihu.com/?target=https%3A//baike.baidu.com/item/X.509/2817050) 国际标准。_

**数据加密**

数字签名:当我们去银行办理业务时,会在业务单上签下自己的名字,这个叫签名。而在网络通信中,签名在网络通讯中的应用称为数字签名,当服务器向客户端发送信息时,会将报文生成报文摘要,同时对报文摘要进行 hash 计算,得到 hash 值,然后对 hash 值进行加密,然后将加密的 hash 值放置在报文后面,这个加密后的 hash 值就称为签名。服务器将报文、签名和数字证书一同发送给客户端。客户端收到这些信息后,会首先验证签名,利用签名算法对签名进行解密,得到报文摘要的 hash 值,然后将得到的报文生成报文摘要并利用签名 hash 算法生成新的 hash 值,通过对比这两个 hash 值是否一致,就能判断信息是否完整,是否是由真正的服务器发送的。可知签名有两个作用确认消息发送方可靠,确认消息完整准确

SSL 的加密机制:在使用 SSL 的网络通讯过程中,消息在请求和响应中都是加密传送的。首先要知道加密算法分为两种:**对称加密和非对称加密****对称加密就是发送双发使用相同的密钥对消息进行加解密,常见的对称加密为 DES、3DES,AES 等。非对称加密是发送双方各自拥有一对公钥私钥,其中公钥是公开的,私钥是保密的。当发送方向接收方发送消息时,发送方利用接收方的公钥对消息进行加密,接收方收到消息后,利用自己的私钥解密就能得到消息的明文。其中非对称加密方法有 RSA、Elgamal、ECC 等**。此处只是简单了说明了这两种加密机制的过程,若要深入理解它们的原理、过程请网上搜索相应的资料。

**身份认证**

网络通讯中是怎么利用 CA 证书进行身份认证的?客户端与服务端需要经过一个握手的过程才能完成身份认证,建立一个安全的连接。握手的过程如下:

客户端访问服务器(比如:[https://www](https://link.zhihu.com/?target=https%3A//www).), 发送 ssl 版本、客户端支持的加密算法、随机数等消息。

服务器向客户端发送 ssl 版本、随机数、加密算法、证书(证书出现了)等消息。

客户端收到消息后,判断证书是否可信(如何判断可信,看下文介绍),若可信,则继续通信,发送消息包括:向服务器发送一个随机数,从证书中获取服务器端的公钥,对随机数加密;编码改变通知,表示随后信息都将使用双方协定的加密方法和密钥发送;客户端握手结束通知。

服务器端对数据解密得到随机数,发送消息:编码改变通知,表示随后信息都将使用双方协定的加密方法和密钥发送。

以上就是整个握手的过程,在第三步实际上就完成了身份的认证,第四、五步是进行密钥的商定,因为非对称加密算法对数据加密非常慢,效率低,而对称加密加密效率很高,因此在整个握手过程要生成一个对称加密密钥,然后数据传输中使用对称加密算法对数据加密。可知 ssl 整个握手过程包括身份认证、密钥商定。

[SSL/TLS 原理详解_Sean's Notes - SegmentFault 思否](https://link.zhihu.com/?target=https%3A//segmentfault.com/a/1190000002554673)

**使用用户身份信息生成数字签名**

对称加密方式

![](https://pic3.zhimg.com/v2-5c0610bf16a7baf9bae7c6787dd7756a_r.jpg)

**CA 认证链**

根证书在证书验证中极其重要,而且,根证书是无条件信任的,只要我们将根证书安装上,就说明我们对根证书是信任的,若终端信任根证书,则信任根证书生成的其他证书。终端没有安装相应 https 证书则不能访问 https 网站。

![](https://pic1.zhimg.com/v2-9491a94e46b0adb1d52decabe0e870e8_r.jpg)

0 comments on commit 2b9699a

Please sign in to comment.