问题:在浏览器和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)签发的
这两个过程也是基于公钥与私钥的,签发和认证的过程跟传输信息过程中的加密解密过程非常类似
签发证书的步骤:
- Signing阶段,首先撰写证书的元信息:签发人(Issuer)、地址、签发时间、过期失效等;当然,这些信息中还包含证书持有者(owner)的基本信息,例如owner的DN(DNS Name,即证书生效的域名),owner的公钥等基本信息。
- 通过Issuer(CA)的证书指定的Hash算法将信息摘要提取出来;
- Hash摘要通过Issuer(CA)私钥进行非对称加密,生成一个签名密文;
- 将签名密文attach到文件证书上,使之变成一个签名过的证书。
验证证书的步骤:
- Verification阶段,浏览器获得之前签发的证书;
- 将其解压后分别获得“元数据”和“签名密文”;
- 将Issuer(CA)的证书指定的Hash算法应用到“元数据”获取摘要A;
- 将"签名密文"通过Issuer(CA)的公钥解密获得摘要B。
- 比对摘要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颁发的证书的信用,影响要小很多
标签:公钥,end,证书,CA,---,bp,user,certificates From: https://www.cnblogs.com/betty-123/p/17591051.html