-----------------------------------------------欢迎查看网络安全连载博客-----------------------------------
【网络安全】-安全散列函数,信息摘要SHA-1,MD5算法 【网络安全】-非对称加密,RSA算法,数字签名
【网络安全】-RSA非对称算法算法、数字签名 【网络安全】-建立安全socket连接、登录
【网络安全】-【数字证书,证书链】
---------------------------------------------------------------------------------------------------------------------
证书并不陌生,接触网络的同学应该从浏览器或者操作系统的提示框中了解到,根证书也有所耳闻。这篇文章主要说明证书,证书链和根证书。先说一下【数字证书】主要包含了下面几个关键信息(涉及到网络安全方面的术语,可参考上面的知识链接)
1. Subject (证书持有者信息)
证书的所有者(创建者),一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。
2. Issuer (证书发行方,或者颁发者)
指出是什么机构发布的这个证书,也就是指明这个证书是哪个公司创建的(只是创建证书,不是指证书的使用者)
3. Public key (公钥)
证书的所有者(创建者)的公钥(这个公钥基本没什么用,除非你给别人颁发证书)
4. 数字签名
发行方用私钥进行的签名
直接上图,打开mac的钥匙串,双击其中一个证书,认识一下证书的构成。
如何验证一个证书C是不是可信任的呢?需要此证书颁发者B的公钥来验证C证书的合法性。颁发者B的公钥又存在于B的证书中。那么问题来了,又怎么去验证B的证书合法性呢。继续这样追究下去没有个头啊。我们用iOS开发中常见的证书来说明这个追究的过程。
我客户端申请了一个APP证书叫iOS Dev。那么Apple是如何验证这个APP是合法的呢。读者可根据红色的线,从左往右理解:根据iOS Dev的签发者信息,找到签发者是Apple Worldwide Developer Relations Certification。然后根据Apple Worldwide Developer Relations Certification证书的签发者,找到上级证书是Apple Root CA。发现Apple Root CA的持有者跟签发者是同一个人(公司)。那么可以认为这个证书是可信任的(即根证书)。
有了根证书,开始验证过程蓝色的箭头。如果到达iOS Dev证书一直是验证成功的,说明这个iOS Dev是合法的(在新标签中打开,查看大图)
所以,Apple Root CA被称为是根证书。一句话概括根证书的构成:根证书自己公钥+自己私钥的签名。这样就有一个好处:根证书的公钥可以验证本证书里的签名。另外:像Apple Worldwide Developer Releations Certification也被成为中级证书。
上面已经描述了证书验证的过程,下图是证书链的逻辑图:
上图证书链中有个 Root CA(Certificate Authority),很多浏览器或者操作系统会内置CA的根证书,然后12306属于自己的系统。并不曾从CA获取证书,所以浏览器和操作系统不认。如图:
把下面这个勾上,那么钥匙串就多了一个证书。这样不用每次访问都提示了
之所以12306不去知名CA认证,我想也是属于政治原因。知名的CA都是国外的。我党为什么要被国外去认证(或者叫盖戳)。
参考文章:
数字证书原理 http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
证书链http://lukejin.iteye.com/blog/587200