数字证书~证书链

来源:客户端认证https服务端证书过程详解——证书链_huzhenv5的博客-CSDN博客_证书链认证过程

基本概念

证书

首先,我们看看在wikipedia上对证书的定义,In cryptography, a public key certificate (also known as a digital certificate or identity certificate) is an electronic document used to prove ownership of a public key.。可以这么说,证书是用来认证公钥持有者的身份的电子文档,防止第三方进行冒充。一个证书中包含了公钥、持有者信息、证明证书内容有效的签名以及证书有效期,还有一些其他额外信息。

比如一个证书详细信息的截图:

CA

我们用证书来认证公钥持有者的身份,那证书是怎么来的呢?又该怎么认证证书呢?这涉及到一个称之为PKI(Public key certificate)的规范体系,包含了数字证书,公钥管理以及验证等技术,详细可以参考:https://en.wikipedia.org/wiki/Public_key_certificate ,我们这里只是简单介绍一下概念。在阮老师的文章中,提到证书要由证书中心(Certificate authority,简称CA)签发的,同样参考Wikipedia上的概念,In cryptography, a certificate authority or certification authority (CA) is an entity that issues digital certificates. (https://en.wikipedia.org/wiki/Certificate_authority) ,简单来说,CA就是签发电子证书的实体。

Signing & Verification

证书的签发(Signing)和认证(Verification)的过程:

 

这两个过程也是基于公钥与私钥的,签发和认证的过程跟传输信息过程中的加密解密过程非常类似。签名密文(Signature)是一个重要凭证,Signature与签发人的公钥一同传输,可以避免中间人在获取证书时对证书内容的篡改。参考:http://blog.torchz.net/security/2014/12/23/security-ca-chain-of-trust.html 。

签发证书的步骤:

  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)的公钥,又该如何获得这个公钥,同时确保这个公钥是有效的呢?就是下面的证书链的内容

证书链

实例

在Chrome上任意打开一个支持HTTPS的网站,例如 https://www.baidu.com/ ,打开开发者工具,点开Security

点开证书路径,查看证书信息如下: 

 

我们继续探究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证书中的公钥未被篡改。

CA组织

除了end-user之外,证书被分为root Certificates和intermediates Certificates。相应地,CA也分了两种类型:root CAs 和 intermediates CAs。首先,CA的组织结构是一个树结构,一个root CAs下面包含多个intermediates CAs,而intermediates又可以包含多个intermediates CAs。root CAs 和 intermediates CAs都可以颁发证书给用户,颁发的证书分别是root Certificates和intermediates Certificates,最终用户用来认证公钥的证书则被称为end-user Certificates。

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 certificates

那Root Certificates又是如何来的呢?根据 https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/ 这篇文章的说法,除了可以下载安装之外,device(例如浏览器,操作系统)都会内置一些root certificates,称之为trusted root certificates,https://support.apple.com/en-us/HT202858 ,在Apple的官网上可以看到这个列表,有各个操作版本直接内置的Root Certificates。windows系统查看方式可以看这篇文章:windows查看系统证书

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

 

其他

了解了这个证书体系之后,才明白为什么百度/google这种公司也需要向第三方购买签名证书了,自签root证书推广起来非常困难,这也导致目前的证书市场基本上被 Symantec(VeriSign/GeoTrust) / Comodo / GoDaddy 垄断。百度使用的是Versign,google使用的是GeoTrust。目前HTTPS的推广已经不可避免,也已经有一些公益组织开始提供免费、自动化、开放的证书签发服务,例如:Let’s Encrypt 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反反爬技术,破解猫眼网加密数字

From:https://blog.csdn.net/qq_31032181/article/details/79153578 From:http://www.freebuf.com/news/140965.html 利用自定义web-font实现数据防采集:http://blog.csdn.net/fdipzone/article/details/68166388 利用前端字体文件(.ttf)混…

数字签名,数字证书,证书链原理

来源:数字签名,数字证书,证书链原理(图文详解)_Ruby丶彬的博客-CSDN博客_证书链验证原理 数字签名,数字证书,加密简述 数字签名:谈及数字签名,就如小时候老师叫把卷子或…

猫眼 — 破解数字反爬获取实时票房

From:https://zhuanlan.zhihu.com/p/33112359 js分析 猫_眼_电_影 字体文件 font-face:https://www.cnblogs.com/my8100/p/js_maoyandianying.html 解析某电影和某招聘网站的web-font自定义字体:https://www.jianshu.com/p/5400bbc8b634 Fo…

Yoshua Bengio团队通过在网络「隐藏空间」中使用降噪器以提高深度神经网络的「鲁棒性」

原文来源:arXiv 作者:Alex Lamb、Jonathan Binas、Anirudh Goyal、Dmitriy Serdyuk、Sandeep Subramanian、Ioannis Mitliagkas、Yoshua Bengio「雷克世界」编译:嗯~是阿童木呀、KABUDA、EVA导语:深度神经网络在各种各样的重要任…

PDF签名系列(1):PDF签名机制的漏洞分析

来源:PDF签名系列(1):PDF签名机制的漏洞分析 - 知乎 研究PDF文件的签名机制有一段时间了,刚开始学习的时候就看到有提到说,被签名的PDF内容的Range gap,会成为这个机制的漏洞,但是一直不能完全参透。直到昨天看到一篇…

linux date命令显示毫秒,解决MacOS系统中date命令没有毫秒和sha512sum、sha256sum、md5sum等命令的问题...

安装brew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"使用brew安装coreutilsbrew install coreutils设置系统新的命令软连接sudo ln -sv /usr/local/bin/gsha256sum /usr/local/bin/sha256sumsudo ln -sv /…

PDF签名系列(2):PDF的签名值到底存在哪里?

来源:PDF签名系列(2):PDF的签名值到底存在哪里? - 知乎 研究过PDF签名的同学应该见过下面这张图, 来自ADOBE的文档Acrobat_DigitalSignatures_in_PDF.pdf PDF被签名的内容是整个文档除去signature dictionary里/Contents下面的内容. 签过名的哈希值再连同其他一些…

数字签名时间戳服务器的原理

时间戳服务工作流程: ◆ 用户对文件数据进行Hash摘要处理; ◆ 用户提出时间戳的请求,Hash值被传递给时间戳服务器; ◆ 时间戳服务器对哈希值和一个日期/时间记录进行签名,生成时间戳; ◆ 时间戳数据和文…

android x86 笔记本卡屏,笔记本死机卡屏怎么办

笔记本死机卡屏的解决方法:首先按住键盘上ctrlaltdel,弹出任务管理器;然后在弹出任务管理器中选择explorer.exe;接着右键点击explorer.exe,在弹出菜单中选择“结束进程”;最后输如explorer.exe即可。首先&a…

【读书笔记】《框架设计(第2版)CLR Via C#》中两个比较有趣的知识点

本季度公司要求阅读《框架设计(第2版)CLR Via C#》这本书,由于前两个月一直很忙,也没有时间阅读,偶尔阅读也是很晚回家以后临睡前拿起这经典之作读那么一个小节。最近利用周末可以说一鼓作气的看了大半本,感…

8个最高效的Python爬虫框架,你用过几个?

From:https://segmentfault.com/a/1190000015131017 1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信…

300+Jquery, CSS, MooTools 和 JS的导航菜单资源

如果你是网站前端开发人员,那么对你来说,也许做一个漂亮导航菜单会很得心应手。本文要为大家总结各种导航菜单的资源,以便让大家的网站前端开发的工作更方便更快速,只要选择现成的例子就可以应用于自己的网站了。本文收集的这些资…

轻量级分布式任务调度平台 XXL-JOB

From:https://www.cnblogs.com/xuxueli/p/5021979.html github 地址 及 中文文档地址:https://github.com/xuxueli/xxl-job 《分布式任务调度平台XXL-JOB》 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发…

畅玩4c刷android 9.0,华为畅玩4C电信版 CyanogenMod 13.0_Android_6.0.1 【HRT_chiwahfj】

本帖最后由 chiwah渔夫 于 2016-9-9 22:31 编辑【基本信息】ROM名称:华为畅玩4C电信版 CyanogenMod 13.0_Android_6.0.1ROM大小:617M适配版本:CyanogenMod 13.0_android_6.0.1测试机型:华为畅玩4C电信版作者简介:HRT团…

可以叫板Google的一个搜索引擎 —— DuckDuckGo

From:https://blog.csdn.net/inter_peng/article/details/53223455 作为习惯了使用Google进行资料查询的我来说,如果没有Google,真的感觉很难受。纵使找了一些可以翻墙的软件,但无奈还是经常不稳定,总是时断时续的。Bi…

小米鸿蒙1001小米鸿蒙,小米高管早就放下狠话!愿意使用鸿蒙2.0系统:那其他厂商呢?...

【9月14日讯】相信大家都知道,自从华为鸿蒙OS系统2.0版本正式发布以后,由于华为消费者业务CEO余承东正式确认:“华为手机在12月开始适配鸿蒙OS系统,明年所有华为手机全面启用鸿蒙OS系统。” 这也意味着国产智能手机厂商也将彻底的…

WCF中的管道——管道类型

管道是所有消息进出WCF应用程序的渠道。它的职责是以统一的方式编制和提供消息。管道中定义了传输、协议和消息拦截。管道以层级结构的形式汇总,就创建了一个管道栈。管道栈以分层的方式进行通信并处理消息。例如,一个管道栈可以使用一个TCP协议管道和一…

android德州扑克计算器,学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum...

原标题:学界 | 一台笔记本打败超算:CMU冷扑大师团队提出全新德扑AI Modicum选自arXiv参与:路、晓坤CMU 冷扑大师团队在读博士 Noam Brown、Tuomas Sandholm 教授和研究助理 Brandon Amos 近日提交了一个新研究:德州扑克人工智能 M…

神器 | 百度云资源搜索

From:https://blog.csdn.net/qq_21492635/article/details/81109247 直接上神器 该网页没有做自适应,也没有专门的手机站点,因此建议电脑使用。也可下载桌面客户端(仅支持windows),稳定不卡,速度…

html前端如何缓存页面,Nuxt中如何做页面html缓存

Nuxt是一款基于Vue的服务端渲染SSR框架在Nuxt框架的API中,有一个叫 serverMiddleware 的服务端中间件,我们可以利用它在返回首屏html前做一些缓存的处理在这之前我们需要了解一个叫LRU的算法,LRU是一种缓存淘汰算法,用链表存储数据…