Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
wuchangming committed Nov 21, 2016
2 parents 4b88516 + c6a00e1 commit ea3e7d7
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions doc/Chapter3.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

<img src="img/Chapter3/clientTalkToHttpsServer.png" >

由上图可看出只有拥有了“私钥”的服务器才能解密出“公钥”加密的对话内容。如果客户端获取到的公钥确实是由**正正**服务器生成的,那么就能确保了服务器的身份不是伪造的。现在问题来了,因为公私钥的生成算法是开源的,每个服务器都能提供并生成自己的一对公私钥,客户端如何确认拿到的公钥不是伪造的。
由上图可看出只有拥有了“私钥”的服务器才能解密出“公钥”加密的对话内容。如果客户端获取到的公钥确实是由**真正**服务器生成的,那么就能确保了服务器的身份不是伪造的。现在问题来了,因为公私钥的生成算法是开源的,每个服务器都能提供并生成自己的一对公私钥,客户端如何确认拿到的公钥不是伪造的。

这里引出了另外一个安全机制,就是数字证书链。证书链的核心是**证书中心**(certificate authority,简称CA),合法CA的公钥是**预存**在操作系统和浏览器里的,只有通过了CA认证了的服务器公钥才被浏览器客户端认为是可信的公钥。认证的原理很简单,依然是公私钥原理。CA拿自己的私钥去给需要认证的服务器公钥签名,生成一个“数字证书”。数字证书是包含了CA的签名,服务器自身公钥等等信息的集合体。浏览器拿着CA的公钥去验证该签名。只有被CA公钥验证通过的证书才是可信任的证书。有了这个逻辑,整个安全证书链信任系统就构成了。
这里引出了另外一个安全机制,就是数字证书链。证书链的核心是**证书中心**(certificate authority,简称CA),合法CA的公钥是**预存**在操作系统和浏览器里的,只有通过了CA认证的服务器公钥才被浏览器客户端认为是可信的公钥。认证的原理很简单,依然是公私钥原理。CA拿自己的私钥去给需要认证的服务器公钥签名,生成一个“数字证书”。数字证书是包含了CA的签名,服务器自身公钥等等信息的集合体。浏览器拿着CA的公钥去验证该签名。只有被CA公钥验证通过的证书才是可信任的证书。有了这个逻辑,整个安全证书链信任系统就构成了。

**客户端验证服务器证书**
<img src="img/Chapter3/httpsCertWorkflow.png" >
Expand Down

0 comments on commit ea3e7d7

Please sign in to comment.