浅析数字证书

2023-05-16

出处:http://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html


 hyddd原创,转载请说明出处:>

  最近看会Session hijack的东西,劫持现在已经实现,yahoo等一些没有用Https协议的邮箱被成功地劫持了(迟下发文章),由于对Https不熟悉,所以看了一下为什么Https的会话不能劫持。

  本文主要介绍的SSL中的涉及到的"数字证书"这个东东。

一.什么是数字证书?

  数字证书是一种权威性的电子文档。它提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构----CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。当然在数字证书认证的过程中,证书认证中心(CA)作为权威的、公正的、 可信赖的第三方,其作用是至关重要的。

  Ok,知道什么是数字证书后,先看看它长的什么样吧:>,文件缩略图如下:

  

  双击后打开如下:

  

 

二.CA认证机构/CA认证中心

  1.CA认证中心是什么?

  CA认证中心是负责签发管理认证数字证书的机构,是基于国际互联网平台建立的一个公正,权威,可信赖的第三方组织机构。

  2.世界上的CA认证中心不止一间,那他们之间的关系是什么(CA认证中心之间的关系)?

  嗯,回答这个问题之前可以先看看下图:

  

  从图中可以看到,CA认证中心之间是一个树状结构,根CA认证中心可以授权多个二级的CA认证中心,同理二级CA认证中心也可以授权多个3级的CA认证中心...如果你是数字证书申请人(比如说:交通银行),你可以向根CA认证中心,或者二级,三级的CA认证中心申请数字证书,这是没有限制的,当你成功申请后,你就称为了数字证书所有人。值得注意的是,根CA认证中心是有多个的,也就是说会有多棵这样的结构树。FireFox里面默认记录了一些根CA认证机构的信息,如图:

  

  看到这里,肯定有人会问,如果有现在新的根CA认证机构成立,FireFox肯定是没有这个CA认证中心的信息的(这些信息是用来验证子CA认证机构的,很重要,后面来会讲到),那怎么办呢?嗯~~确实,如果今天2009-1-8日突然在哪里成立一个新的CA认证中心,我FireFox里面肯定没有他的信息的!但解决办法还是有的,看上图,可以找到一个"Import"按钮,当我们遇到这样的倒霉事时,只有自己去下载并导入根CA认证中心信息了(其实这样做是不太安全的!),或者期望FireFox的升级会升级这些信息,但这个我是不确定的。

  3.为什么CA认证中心是权威的?

  其实搞清楚这个问题后,你也会真正了解“CA认证中心是如何授权子CA认证中心的?”,“为什么伪造的数字证书是无效的”,“为什么数字证书是一种权威性的电子文档”等等一系列的问题。并且SSL可以说是建立在CA认证中心的权威,公正,可信赖的基础上的,如果CA认证中心的信息可以被伪造的,那么SSL的一切就完了......

  首先,我们先来看看,在FireFox里记录的CA认证中心的信息到底是什么东西??见上图,单击某项,Export导出....你会看到导出的东西很面熟,原来就是数字证书!!

  实际上每个CA认证中心/数字证书所有人,他们都有一个数字证书,和属于自己的RSA公钥和密钥,这些是他们的父CA认证中心给他们颁发的,这里先大概解释一下RSA,RSA是一种非对称加密的算法,它的公钥和密钥是配对的,如果用公钥加密,用私钥解密就可以得到明文;如果用私钥加密,用公钥解密也可以得到原来的明文,这由RSA特性决定,他效果可以用下图概括:

  

  对于私钥:CA认证中心/数字证书所有人自己保存,不公开。

  对于公钥:CA认证中心/数字证书所有人会把公钥存在他的CA认证中心的数字证书内。

  (1).首先,CA认证中心/数字证书所有人,它在网络上的表现形式只能是一张数字证书!所以我们可以把某张数字证书等价于某个CA认证中心/数字证书所有人。这样的话,验证数字证书的合法性就可以确定CA认证中心/数字证书所有人是否是合法的!!!

  (2).数字证书使用数字签名作验证!这里简单说明一下数字签名的过程:你从Firefox/IE导出的数字证书包含3个部分:证书内容(F),加密算法(A),F加密密文(F') (数字证书结构会在第三部分详细介绍),在这里,A不是一个算法,而是两个,所以密文F'是F两次加密后的结果。

  首先,F会被散列算法SHA1计算出hash值h1(称为128bit的摘要),然后h1会被发布这个数字签名的CA认证机构的用私钥进行RSA加密,注意:是发布这个数字签名的CA认证机构,如果现在被加密的数字证书是属于二级CA认证机构的,那么用来加密这个证书的私钥是根CA认证机构的私钥!!RAS加密完后,就形成密文F'。

  当你要验证这个数字证书可信/合法性时,你需要找到你的上一层CA认证中心的数字证书,并且从中获取公钥,把数据证书中的密文F'进行RSA解密,如果得出的值h2和h1比较(h1可以立即用数据证书中的F现场算出来),如果相等,则认为证书是可信的,合法的!由于你是不可能知道上一层CA认证中心的私钥,所以你无法伪造一个可以用上一层CA认证中心公钥解密的数字证书!!

  详细流程图如下:

  

   由于一个数字证书基于上层的数字证书作验证,那上层的数字证书又是否合法呢??这就会出现一直递归上去的现象,事实也是这样的,验证一个证书是否合法,需要验证到他的最顶层的根证书是否合法!从其他的文章弄来的这幅图很好地表达了这个思想:

   

  这里肯定又有人会问,那么最顶层的CA认证中心如何证明它的合法性呢?.......呵~这就是为什么FireFox要预先把一些最顶层(这里的"最顶层"和"根"是同一个概念)的CA认证中心的证书加入到权威信任列表中了,因为,最顶层CA认证中心没有办法证明,所以,最顶层的CA认证中心是总是受信任的!!而事实上,最顶层的CA认证中心在是世界上也是为数不多的。这里大家应该了解为什么我刚才说自己导入根CA证书是不太安全的,因为你无法验证。

三.数字证书的组成

  可以先看看我从Firefox的证书截图:

  

  1.Certificate(证书):

   (1).Common Name(证书所有人姓名,简称CN,其实就是证书的名字,如第一幅图看到的:ABA.ECOMRoot....)

   (2).Version(版本,现在一般是V3了)

   (3).Issuer(发证机关)

   (4).Validity(有效日期)

   (5).Subject(证书信息,你会发现它和Issuer里面的内容是一样的)

   (6).Subject's Public Key Info(证书所有人公钥,刚才所说的公钥就是这个!)

   (7).Extension(扩展信息)

   (8).Certificate Signature Algorithm(公钥加密算法)、

    以上这几项就是上面所说的证书内容(F)。 

  2.Certificate Signature Algorithm:

    这是描述证书的加密算法,就是上所说的加密算法(A),看它的Fireld Value,一般会写:PKCS #1 SHA-1 With RSA Encryption

  3.Certificate Signature Value:

   这记录的是证书被加密后的结果,相当于上面说讲的F'。

四.数字证书的验证

  要回答数字证书是如何验证的,首先要知道数字证书是要验证些什么东西:>,数字证书的验证,上面已经讲了一些,这做一个总结:

  1.可信性验证/合法性验证:这个刚才已经说的很明白了吧:>

  2.完整性验证:在验证可信性的过程中,h1和h2的比较,其实已经顺便验证其完整性了。

  3.有效性验证:比如验证它的Vilidity值,看是否过期...

 

  先写这么多,其他以后补充!并且可能有些地方写得会比较乱,这个我稍后会改正:>~欢迎拍砖!

 

五.参考资料:

1.http://baike.baidu.com/view/204415.htm

2.http://finance.sina.com.cn/money/roll/20080401/00404692291.shtml

3.http://blog.csdn.net/sfdev/archive/2008/03/12/2174305.aspx

4.http://man.chinaunix.net/develop/rfc/RFC2313.txt

5.http://www.zhlmmc.com/diary/14554

作者:hyddd
出处:http://www.cnblogs.com/hyddd/
本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅析数字证书 的相关文章

  • 无病呻吟2:关于小公司

    http blog csdn net hello world2001 article details 7229410 虽然很快离开了小公司 xff0c 但并不是说小公司不好 xff0c 相反 xff0c 我认为小公司才真正有机会 xff0c
  • 无病呻吟3:10年中最大的心得

    http blog csdn net hello world2001 article details 7229411 生活中 xff0c 人人都是销售 面试的时候 xff0c 要把自己的实力销售给面试者 给上级汇报工作的时候 xff0c 是
  • 手把手教你做一辆mini平衡自行车!

    今天给大家带来的是一个博主老倪制作的迷你的平衡自行车项目 xff0c 虽然是4年前的老项目了 xff0c 不过相信我们仍然能从中学到一些新东西 演示效果 自行车平衡DIY分为3部分介绍 xff1a 第一部分介绍自行车平衡基本物理原理 xff
  • ADIS16448 配置

    span class hljs keyword void span ADIS16448 Init span class hljs keyword void span GPIO InitTypeDef GPIO InitStructure R
  • 5. 第一次跳槽的心得

    http blog csdn net hello world2001 article details 7229415 第一次跳槽成功喽 xff0c 按照惯例 xff0c 还是从求职角度总结下经验吧 1 不打无把握之仗 xff0c 既然决定到
  • 无病呻吟4:关于简历,以及自我否定之否定

    http blog csdn net hello world2001 article details 7229417 终于到了很多人喜欢的骂人环节了 不知道各位看官 xff0c 在自己的简历上花了多少时间 几个小时 xff0c 还是几天 x
  • 6. 混在2002 - 欢乐的世界杯

    http blog csdn net hello world2001 article details 7229422 写混在日本公司的日子前 xff0c 先简单回忆下2002年幸福的上半年 xff0c 以及随后我作出的一个影响我至今的决定吧
  • 无病呻吟6:F4,圈子,与硬通货

    http blog csdn net hello world2001 article details 7229429 F4是个小圈子 xff0c 当然不是台湾那几个奶油小生 xff0c 而是这个日本公司本人所在部门内的一个小团体 其中的成员
  • 7. 路在何方:第一次选择

    http blog csdn net hello world2001 article details 7229430 2009年那次跳槽的时候 xff0c 不止一次的听到猎头和面试公司的人对我说过 xff0c 你的工作背景非常漂亮 xff0
  • 9. 混在2002:和闷骚男的“同居”生活 - 1

    http blog csdn net hello world2001 article details 7229434 说点开心的事情 xff0c 我当时的两个室友 跟这两个人成为死党 xff0c 都是因为合租的缘故 两个人一个叫 老灵通 x
  • 10. 混在2002:和闷骚男的“同居”生活 - 2

    http blog csdn net hello world2001 article details 7248920 继续说当时的室友 xff0c 这两人都是比较有想法 xff0c 有点小浪漫 xff0c 敢想敢为 xff0c 又比较有毅力
  • 11. 挑战500强管理职位前的苦逼生活

    http blog csdn net hello world2001 article details 7351962 至于我当时的状态 xff0c 则是在迷茫中四处寻找突破口 在一番折腾后 xff0c 我终于定下了一个宏大的目标 xff0c
  • 第二次跳槽:意料之外的结局 - 上

    http blog csdn net hello world2001 article details 7352015 2006年的跳槽是我所有跳槽经历中耗费时间最长 xff0c 最痛苦 xff0c 也最纠结的一次 既有正沉浸在即将成功中的喜
  • 14:第二次跳槽:意料之外的结局 - 下

    http blog csdn net hello world2001 article details 7352028 这也是一个出乎我意料之外的机会 在接到这个电话的时候 xff0c 我正跟Accenture IBM HP这些公司打得火热
  • 推荐一个全新硬件/嵌入式刷题网站!免费!好用!

    越来越多的人才从转码变成了转硬件 xff0c 但是转岗过程中会遇到一些问题 xff0c 比如 xff1a 对学习路线不清晰 找不到专业的练习题 企业真题搜寻困难 xff0c 不知道笔面试考察那些内容 基础编程是一个计算机专业的必备技能 xf
  • my.cnf

    http wenku baidu com view d10a7ea20029bd64783e2cdd html My cnf配置选项 mysqld程序 目录和文件 basedir 61 path 使用给定目录作为根目录 安装目录 chara
  • mysql 修改root密码的方法

    如果是刚安装成功后 xff0c 密码为空 xff0c 修改密码方法为 mysqladmin u root password 39 11111 39 密码不为空 xff0c 修改密码方法有两种 xff1a 1 mysqladmin u roo
  • mysqldump用法小结

    1 备份单个数据库 普通备份 xff1a root 64 A server mysqldump u root p 39 111111 39 newjueqi default gt tmp newjueqi default sql root
  • MySQL数据库性能优化之缓存参数优化

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接 xff1a http isky000 com database mysql perfornamce tuning

随机推荐

  • magento中的启用https

    在Magento的后台管理中 General gt web gt secure 有安全链接的设置 xff0c 所谓安全链接 xff0c 是指启用了https 协议的链接 百度百科中关于https的介绍 xff08 http baike ba
  • 解决magento中guest页面cookie保存时间过短问题

    在magento新的企业版11 xff0c 有个新的功能退货 xff08 RMA xff09 xff0c 不仅能退货 xff0c 还能以guest的身份查看订单的各种信息 xff0c 但在IE下有个问题 xff1a cookies的保存时间
  • 指定magento后台使用的theme

    众所周知 xff0c magneto是能后台配置中指定前台使用的是哪个theme xff0c 但后台呢 xff1f 指定后台的theme xff0c 需要在添加如下的配置 xff1a lt config gt lt stores gt lt
  • MySQL 数据库性能优化之表结构优化

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接 xff1a http isky000 com database mysql perfornamce tuning
  • MySQL 数据库性能优化之索引优化

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接 xff1a http isky000 com database mysql performance tuning
  • MySQL 数据库性能优化之SQL优化

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接 xff1a http isky000 com database mysql performance tuning
  • “巨型”的ESP8266模块,快来围观。

    作者 xff1a 晓宇 xff0c 排版 xff1a 晓宇 微信公众号 xff1a 芯片之家 xff08 ID xff1a chiphome dy xff09 01 巨型ESP8266 ESP8266几乎无人不知 xff0c 无人不晓了吧
  • MySQL数据库性能优化之存储引擎选择

    作者 xff1a Sky Jian 可以任意转载 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及版权声明 链接 xff1a http isky000 com database mysql performance tuning s
  • 配置magento后台翻译

    同事在magento中添加了若干翻译 xff0c 但总是没法再后台显示 xff0c 我帮忙查了很久 xff0c 终于找到问题所在了 xff0c 原来没有配置对应module的后台翻译文件 xff0c 所以在后台显示不出翻译 这里贡献一份前后
  • apache安装新模块的方法

    1 检查是否安装 a 编译安装http bin apachectl l grep mod expires b 如果是以DSO方式编译的 xff0c 则查看 ll modules grep expires 注意 xff0c 以上两种情况不能同
  • prototype.js中hide()和show()的一个注意事项

    在项目中遇到一个问题 xff0c 用prototype js的show xff08 xff09 方法要设置某个div为display block 但总是没法成功 xff0c 后来查了手册 xff1a http api prototypejs
  • doxygentoolkit.vim 用法

    http blog chinaunix net space php uid 61 20570759 amp do 61 blog amp id 61 1922274 早就安上了这个东西 xff0c 只是一直没研究它怎么用 因为 emacs
  • 一些vim知识的摘录

    h function list 看内置函数 b name variable local to a buffer w name variable local to a window g name global variable also in
  • 为什么 Vim 使用 HJKL 键作为方向键

    出处 xff1a http blog jobbole com 18650 导读 xff1a 关于这个问题 xff0c 以前网络上有一种说法 xff0c 手指放在键盘上输入时 xff0c HJKL 比方向键距离手指更近 xff0c 自然输入效
  • 蚂蚁变大象:浅谈常规网站是如何从小变大的(一)

    http zgwangbo blog 51cto com 4977613 849529 标签 xff1a 架构 web 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律
  • 【转】高效使用vim

    出处 xff1a http www cnblogs com hyddd archive 2010 04 08 1706863 html 英文出处 xff1a jmcpherson org editing html 翻译引用 xff1a ti
  • 浅谈HTTP中Get与Post的区别

    http www cnblogs com hyddd archive 2009 03 31 1426026 html Http定义了与服务器交互的不同方法 xff0c 最基本的方法有4种 xff0c 分别是GET xff0c POST xf
  • PID算法搞不懂?看这篇文章就够了。

    点击上方 大鱼机器人 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 xff01 转自知乎 xff1a jason 原文链接 xff1a https zhuanlan zhihu com p 74131690 1 目
  • Http Message结构学习总结

    http www cnblogs com hyddd archive 2009 04 19 1438971 html 最近做的东西需要更深入地了解Http协议 xff0c 故死磕了一下RFC2616 xff0d HTTP 1 1协议 xff
  • 浅析数字证书

    出处 xff1a http www cnblogs com hyddd archive 2009 01 07 1371292 html hyddd原创 xff0c 转载请说明出处 gt 最近看会Session hijack的东西 xff0c