HTTPS中CA证书的签发及使用过程 (2)

HTTPS中CA证书的签发及使用过程

3,公钥基础设施(PKI) 公钥基础设施的必要性

身份验证和密钥协商是TLS的基础功能,要求的前提是合法的服务器掌握着对应的私钥,但无法确保服务器身份的合法性,因为公钥并不包含服务器的信息,存在安全隐患:

1)中间人攻击: 

客户端C和服务器S进行通信,中间节点M截获了二者的通信;
    节点M自己计算产生一对公钥pub_M和私钥pri_M;
    C向S请求公钥时,M把自己的公钥pub_M发给了C;
    C使用公钥 pub_M加密的数据能够被M解密,因为M掌握对应的私钥pri_M,而 C无法根据公钥信息判断服务器的身份,从而 C和 M之间建立了"可信"加密连接;
    中间节点M和服务器S之间再建立合法的连接,因此 C和 S之间通信被M完全掌握,M可以进行信息的窃听、篡改等操作。

2)信息抵赖

 服务器也可以对自己的发出的信息进行否认,不承认相关信息是自己发出。

HTTPS中CA证书的签发及使用过程

证书颁发机构 认证中心CA

  解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,为此需要引入权威的第三方机构CA。简单的说,PKI就是浏览器和CA,CA是整个安全机制的重要保障,我们平时用的证书就是由CA机构颁发,其实就是用CA的私钥给用户的证书签名,然后在证书的签名字段中填充这个签名值,浏览器在验证这个证书的时候就是使用CA的公钥进行验签。

HTTPS中CA证书的签发及使用过程

CA使用的具体流程:

HTTPS中CA证书的签发及使用过程

a.服务方S向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;(不交私钥)
    b.CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
    c.如信息审核通过,CA会向申请者签发认证文件-证书。
       证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
       签名的产生算法:首先,使用散列函数计算公开的明文信息信息摘要,然后,采用CA的私钥对信息摘要进行加密密文即签名;
    d.客户端 C 向服务器 S 发出请求时,S 返回证书文件;
    e.客户端 C读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
    f.客户端然后验证证书相关的域名信息、有效时间等信息;
    g.客户端内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。

在这个过程注意几点:
    a.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;
    b.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;
    c.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书(为什么说"部署自签SSL证书非常不安全")
    d.证书=公钥(服务方生成密码对中的公钥)+申请者与颁发者信息+签名(用CA机构生成的密码对的私钥进行签名);

即便有人截取服务器A证书,再发给客户端,想冒充服务器A,也无法实现。因为证书和url的域名是绑定的。

CA的作用:

1)颁发证书,颁发证书其实就是使用CA的私钥对证书请求签名文件进行签名;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgwjx.html