SSL通信证书详解

在Https通信中,客户端需要验证服务器提供的数字证书。数字证书中包含了公钥以及其他一些信息。那么数字证书中的参数是什么意思呢?  

  这里列举一个证书(自签名证书)

    生成证书的方式:https://blog.csdn.net/sinat_33822516/article/details/81057646

        

  1.版本

       这个很好理解,就是证书的版本,目前通用的是V3

  2. 序列号

    这个是用来标识某个证书的,也很好理解

 3.签名算法

    这个签名算法是指当前证书的签名使用什么算法签名的,上图是一个自签名证书,也就是用自己的私钥给自己签名的。

  这个签名算法是sha256RSA。当ssl通信的时候,客户端收到证书后,就可以使用该签名算法和公钥来验证该签名。

4. 签名哈希算法

    我们都知道,证书的数字签名是将证书的数字摘要用私钥进行加密的,那么数字摘要的算法是什么呢,这里就是指计算数字摘要所使用的算法。那么ssl通信的时候,客户端时怎么验证证书的有效性的呢,首先客户端收到证书后,将使用公钥和签名算法解密签名,这时候得到的是数字摘要,然后再通过签名哈希算法来对证书进行计算,计算出的数字摘要和通过公钥解密的数字摘要进行对比。如果一致,说明证书是可信的。

  当然这里有个题外话,就是使用谁的公钥来解密签名。当然是给证书签名的公钥啦,那么我们如何得知是谁签名的呢?接着往下看

5.颁发者

    颁发者就是指谁给证书签名的,如果是自签证书,那么颁发者和使用者是同一个,如果不是自签证书,那么这里的颁发者就是给证书签名者的信息。我们事先需要拿到签名者的公钥,才可以验证。

6.有效期从 -到

   这个很好理解的,证书的有效期,超过这个时间,证书就失效了。

7.使用者

  使用者是指证书的拥有者,这里会有CN(common Name),OU(Organization Unit),O(Organization),L(Location),

  S(State)和C(Country)等信息。CN一般会是域名等,一般网站的证书,CN都会是对应的域名,客户端验证证书的时候,会 校  验当前访问的网站域名和证书中CN是否 一样。

8.公钥

   就是使用者的公钥,这里客户端拿到证书后,就相当于拥有了公钥,在接下来的通信中,可以将某些信息通过公钥加密,发送给服务器,这样就防止信息泄露,当然ssl握手的第三个"random"也是通过这种方式实现的

9.公钥参数

  这里公钥参数是与公钥产生的算法有关的。对于RSA算法产生的公钥,公钥参数是05 00 

10. 使用者密钥标识

   这里是指使用者私钥的一个标识。

11. 指纹

      这里是指证书的通过hash算法算出来的整个证书的hash,来确保证书在传输过程有没有被修改过。

12. 指纹算法

   这里是指证书的hash算法。正常情况下是sha1

     

    

猜你喜欢

转载自blog.csdn.net/sinat_33822516/article/details/89217627