网络安全-【数字证书,证书链】
数字证书
数字证书
数字证书
数字证书
1. Subject (证书持有者信息)
证书的所有者(创建者),一般是某个人或者某个公司名称、机构的名称、公司网站的网址等。
2. Issuer (证书发行方,或者颁发者)
指出是什么机构发布的这个证书,也就是指明这个证书是哪个公司创建的(只是创建证书,不是指证书的使用者)
3. Public key (公钥)
证书的所有者(创建者)的公钥(这个公钥基本没什么用,除非你给别人颁发证书)
4. 数字签名
发行方用私钥进行的签名
直接上图,打开mac的钥匙串,双击其中一个证书,认识一下证书的构成。

证书链、根证书
如何确定证书C是否为可信赖的?通过获取颁发者B的公钥来确认C证书的有效性。需要注意的是,在这种情况下,默认情况下我们需要知道颁发者的私钥才能通过加密的方式对C进行验证。而颁发者的私钥则存储在其签名过的数字Intermediate Certificate(IC)中。这种情况下我们就可以通过IC来间接获得该颁发者的私钥信息。这种层层追溯的过程没有尽头,在iOS开发中我们通常采用一种更为简便的方法来解决这个问题:使用可信 root CA认证体系中的根CA来代替复杂的层层追溯过程。
在iOS开发环境中我们可以简单地认为:如果一个应用软件是由苹果公司发行并被广泛认可的话那么它的根CA就应当被视为可信有效的(即根CA)。有了这一前提之后我们可以开始逐步确认流程中的各个环节。

所以可以称为 Apple Root CA 是一种根证书;可以用一句话总结出:一个Root Certificate由其自身公钥及其私钥签名组成;这样的好处在于Root Certificates的公共密钥可用来验证该认证文件中的签名;此外,请注意像 Apple Worldwide Developer Relations Certification这样的认证通常被视为中级认证
所以可以称为 Apple Root CA 是一种根证书;可以用一句话总结出:一个Root Certificate由其自身公钥及其私钥签名组成;这样的好处在于Root Certificates的公共密钥可用来验证该认证文件中的签名;此外,请注意像 Apple Worldwide Developer Relations Certification这样的认证通常被视为中级认证
上面已经描述了证书验证的过程,下图是证书链的逻辑图:

那么为什么12306会弹证书信任的框呢
在上图所示的证书链中有一个Root CA(Certificate Authority)。若干个浏览器或操作系统的内置版本已经包含了CA的根证书。接着,在12306内部拥有一个独立的认证体系。然而,并未从任何CA那里获得过这些证书。因此,在这种情况下,传统的浏览器和操作系统无法识别这些本地颁发的证书。

将该处的标志打钩,则钥匙串就会多出一个证书。这样就不必每次访问都进行提醒。

由于12306未能参与知名CA认证过程,并非完全不参与。已知的事实是:所有知名的CA机构均设在西方国家。那么为何需要将中国共产党列为外国颁发CA认证的对象?
