-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Upload new file: CA 证书详解.md via simpread
- Loading branch information
Showing
1 changed file
with
43 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |