证书的生成和验证

1:根证书:由权威机构发布,在操作系统和网络中记录
2:数字证书的生成时分层级的,下一级证书的生成需要上一级证书的私钥签名,验证的时候也需要上一级证书的公钥验签。
3:根证书是自签名的,用自己的私钥签名。
签名:签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过。
具体操作:对一段信息hash之后得到hash值,将这个hash添加到这段信息之后一起发送给别人。但是在实际操作的情况下为了防止hash值被别人修改,一般将hash值加密(签名)之后再添加到信息后面再进行发送。

4:证书的内容:
对象名称
共有名称
证书的颁发者
签名算法(签名也叫做指纹)
序列号
生效期 失效期
公钥
签名

5.证书的生成:
证书的颁发者在得到证书申请者的一些必要的信息(对象名称,公钥,私钥)之后,证书的颁发者通过哈希得到证书摘要,并用证书颁发者的私钥给这个摘要加密,得到数字签名。综合所有信息生成包含公钥和私钥的两个证书。

证书的生成和验证_第1张图片
![屏幕快照 2018-05-21 15.39.08.png](https://upload-images.jianshu.io/upload_images/2154922-f41854f548068be5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

6.证书的验证:
证书的验证:
我们"ABC Company"申请到这个证书后,我们把证书投入使用,我们在通信过程开始时会把证书发给对方,对方如何检查这个证书的确是合法的并且是我们"ABC Company"公司的证书呢?

1.首先应用程序(对方通信用的程序,例如IE、OUTLook等)读取证书中的Issuer(发布机构)为"SecureTrust CA" ,然后会在操作系统中受信任的发布机构的证书中去找"SecureTrust CA"的证书,如果找不到,那说明证书的发布机构是个水货发布机构,证书可能有问题,程序会给出一个错误信息;
2.如果在系统中找到了"SecureTrust CA"的证书,那么应用程序就会从证书中取出"SecureTrust CA"的公钥,然后对我们"ABC Company"公司的证书里面的签名和签名算法用这个公钥进行解密;
3.然后使用这个签名算法计算"ABC Company"证书的签名,将这个计算的签名与放在证书中的签名对比,如果一致,说明"ABC Company"的证书肯定没有被修改过并且证书是"SecureTrust CA" 发布的,证书中的公钥肯定是"ABC Company"的。对方然后就可以放心的使用这个公钥和我们"ABC Company"进行通信了。

证书的生成和验证_第2张图片
屏幕快照 2018-05-21 15.39.08.png

4.从上面可以看出花钱买的证书不需要下载额外的私钥证书到客户端,但是个人自己生成的证书需要在客户端下载私钥,因为花钱买的证书会将证书加入到受信任的证书层级里面,下一级证书由上一级证书验证,一直到根证书。

摘自:
https://www.cnblogs.com/oc-bowen/p/5896041.html
https://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
https://www.cnblogs.com/oc-bowen/p/5896041.html
http://oncenote.com/2014/10/21/Security-1-HTTPS/

你可能感兴趣的:(证书的生成和验证)