(bp代理)证书--->证书概念和工作流程

发布时间 2023-07-30 10:58:13作者: yezheng

问题:在浏览器和bp中分别设置代理后(此时bp正在监听此浏览器代理端口),用浏览器访问百度网站出现连接不安全问题

原因:没有在浏览器安装证书

解决:

安装bp证书方法:

way1.bp代理软件proxy中options选项export cetificate,再到浏览器中(设置中搜证书选证书颁发机构)再import 

way2:开了浏览器代理后搜http://后下载certificate再导入(同上)浏览器中

 

 

  • 基本概念
    • 证书
    • CA
    • Signing & Verification
  • 证书链
    • end-user certificates & intermediates certificates
    • root certificates
  • 其他

证书是用来认证公钥持有者的身份的电子文档,防止第三方进行冒充。一个证书中包含了公钥、持有者信息、证明证书内容有效的签名以及证书有效期,还有一些其他额外信息

由证书中心(Certificate authority,简称CA)签发的

这两个过程也是基于公钥与私钥的,签发和认证的过程跟传输信息过程中的加密解密过程非常类似

签发证书的步骤:

  1. Signing阶段,首先撰写证书的元信息:签发人(Issuer)、地址、签发时间、过期失效等;当然,这些信息中还包含证书持有者(owner)的基本信息,例如owner的DN(DNS Name,即证书生效的域名),owner的公钥等基本信息。
  2. 通过Issuer(CA)的证书指定的Hash算法将信息摘要提取出来;
  3. Hash摘要通过Issuer(CA)私钥进行非对称加密,生成一个签名密文;
  4. 将签名密文attach到文件证书上,使之变成一个签名过的证书。

验证证书的步骤:

  1. Verification阶段,浏览器获得之前签发的证书;
  2. 将其解压后分别获得“元数据”和“签名密文”;
  3. 将Issuer(CA)的证书指定的Hash算法应用到“元数据”获取摘要A;
  4. 将"签名密文"通过Issuer(CA)的公钥解密获得摘要B。
  5. 比对摘要A和摘要B,如果匹配,则说明这个证书是被CA验证过合法证书,里面的公钥等信息是可信

 

在Verification阶段,解密Signature获得摘要需要通过签发者(Issuer)的公钥,又该如何获得这个公钥,同时确保这个公钥是有效的呢?--->证书链

实例:

我们探究baidu使用的HTTPS证书,除了HTTPS使用的 baidu.com 证书,向上还有两级证书,证书有3类:

  • end-user :baidu.com 包含用来加密传输数据的公钥的证书,是HTTPS中使用的证书
  • intermediates:CA用来认证公钥持有者身份的证书,即确认HTTPS使用的end-user证书是属于baidu.com的证书。这类intermediates证书甚至可以有很多级。
  • root:用来认证intermediates证书是合法证书的证书。

简单来说,end-user证书上面几级证书都是为了保证end-user证书未被篡改,保证是CA签发的合法证书,进而保证end-user证书中的公钥未被篡改。

end-user certificates & intermediates certificates

我们使用end-user certificates来确保加密传输数据的公钥(public key)不被篡改,而又如何确保end-user certificates的合法性呢?这个认证过程跟公钥的认证过程类似,首先获取颁布end-user certificates的CA的证书,然后验证end-user certificates的signature。一般来说,root CAs不会直接颁布end-user certificates的,而是授权给多个二级CA,而二级CA又可以授权给多个三级CA,这些中间的CA就是intermediates CAs,它们才会颁布end-user certificates。

但是intermediates certificates的可靠性又如何保证呢?这就是涉及到证书链,Certificate Chain ,链式向上验证证书,直到Root Certificates,如下图:

 

就是下面的证书链的内容

root certificate来源

device(例如浏览器,操作系统)都会内置一些root certificates,称之为trusted root certificates,https://support.apple.com/en-us/HT202858 ,在Apple的官网上可以看到这个列表,有各个操作版本直接内置的Root Certificates

最后一个问题,为什么需要证书链这么麻烦的流程?Root CA为什么不直接颁发证书,而是要搞那么多中间层级呢?找了一下,godaddy官方给了一个答案,为了确保root certificates的绝对安全性。我们可以想想,如果根证书的私钥泄露了,所有使用该证书认证的设备都将变得不安全,影响太大,所以通过intermediates certificates给网站颁发证书,假如某个intermediates certificates的私钥泄露了,只会影响这一个intermediates certificates颁发的证书的信用,影响要小很多