zoukankan      html  css  js  c++  java
  • ssl 原理简介

    要想弄明白SSL认证原理,首先要对CA有有所了解,它在SSL认证过程中有非常重要的作用。
    说白了,CA就是一个组织,专门为网络服务器颁发证书的,国际知名的CA机构有VeriSign、Symantec,国内的有GlobalSign。
    每一家CA都有自己的根证书,用来对它所签发过的服务器端证书进行验证。

    如果服务器提供方想为自己的服务器申请证书,它就需要向CA机构提出申请。
    服务器提供方向CA提供自己的身份信息,CA判明申请者的身份后,就为它分配一个公钥,
    并且CA将该公钥和服务器身份绑定在一起,并为之签字,这就形成了一个服务器端证书。

    如果一个用户想鉴别另一个证书的真伪,他就用CA的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。
    证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

    证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。
    目前,证书的格式和验证方法普遍遵循X.509国际标准。

    申请证书过程

      

      

      首先要有一个CA根证书,然后用CA根证书来签发用户证书。
      用户进行证书申请:
        1. 先生成一个私钥
        2. 用私钥生成证书请求(证书请求里应含有公钥信息)
        3. 利用证书服务器的CA根证书来签发证书

      这样最终拿到一个由CA根证书签发的证书,其实证书里仅有公钥,而私钥是在用户手里的。

    SSL工作流程(单向)

       

    1.客户端say hello 服务端
    2.服务端将证书、公钥等发给客户端
    3.客户端CA验证证书,成功继续、不成功弹出选择页面
    4.客户端告知服务端所支持的加密算法
    5.服务端选择最高级别加密算法明文通知客户端
    6.客户端生成随机对称密钥key,使用服务端公钥加密发送给服务端
    7.服务端使用私钥解密,获取对称密钥key
    8.后续客户端与服务端使用该密钥key进行加密通信

     

    SSL工作流程(双向)

      单向认证,仅仅是客户端需要检验服务端证书是否是正确的,而服务端不会检验客户端证书是否是正确的。 双向认证,指客户端验证服务器端证书,而服务器也需要通过CA的公钥证书来验证客户端证书。

      双向验证的过程:

    1.客户端say hello 服务端
    2.服务端将证书、公钥等发给客户端
    3.客户端CA验证证书,成功继续、不成功弹出选择页面
    4.客户端将自己的证书和公钥发送给服务端
    5.服务端验证客户端证书,如不通过直接断开连接
    6.客户端告知服务端所支持的加密算法
    7.服务端选择最高级别加密算法使用客户端公钥加密后发送给客户端
    8.客户端收到后使用私钥解密并生成随机对称密钥key,使用服务端公钥加密发送给服务端
    9.服务端使用私钥解密,获取对称密钥key
    10.后续客户端与服务端使用该密钥key进行加密通信

  • 相关阅读:
    剑指Offer
    剑指Offer
    剑指Offer
    选书
    马的遍历
    从事效应
    魔性的素数环1~20 自带解释~
    [POJ1236]Network of Schools(并查集+floyd,伪强连通分量)
    [HDOJ3974]Assign the task(建树胡搞)
    [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
  • 原文地址:https://www.cnblogs.com/yyxianren/p/10839427.html
Copyright © 2011-2022 走看看