客户端服务器非对称加密流程

看了一下午数字证书的内容,总结一下。

 

1.数字证书是数字证书,数字签名是数字签名,两回事。

2.公钥加密,私钥解密;私钥加密,公钥解密;只有这两种情况

3.所谓签名,就是用一个签名算法,把需要签名的内容计算成你不认识的一段字符串,然后附在内容的后边。

4.只要内容改变,签名的字符串就会完全改变。不信的请自己测试“1”和“11”的sha1值。

5.(重点)个人认为整个加密流程的要点是两件事:

a.内容有没有被修改

b.是不是当事人发送的(不管是双方中的哪一方)

6.CA机构颁发证书的时候会用CA机构的私钥加密指纹和指纹算法。而当客户端拿到一个证书的时候,会在windows系统中找到这个CA机构的公钥,并用这个公钥来解密指纹和指纹算法。

 

 

最后,做个举例总结:

 

服务器为了跟别人安全通信,去CA认证机构申请了数字证书。数字证书包括服务器的公钥,认证机构,指纹,指纹算法等信息。客户端向服务器请求通信,服务器把数字证书给了客户端。客户端需要一个可以信任的证书机构,所以客户端在windows系统中查找所获证书的颁发机构,找到后使用系统自带的证书公钥解开指纹和指纹算法,客户端使用获得的指纹算法对证书内容本身进行了计算,使用计算后的指纹和证书中的指纹对比,如果一致则认为证书没有被修改。此时就可确定证书中的公钥确实是服务器的公钥。
客户端用服务器的公钥加密了一个随机字符串发送给服务器,服务器收到后用对应私钥加密,然后将加密的字符串发送给客户端。客户端如果使用证书中得到的公钥成功解密,则认为证书的发送方确实是服务器。此时既确定了证书(实际就是公钥内容)没有被修改,也确定了证书发送方确实是服务器。
此时客户端生成一个对称加密密钥(对称加密无所谓公钥私钥),客户端使用服务端的公钥将对称加密算法和密钥发送给服务端,之后客户端和服务端使用该对称加密密钥进行通讯,至此大功告成。
参考:

猜你喜欢

转载自jhonstryker.iteye.com/blog/2064600