HTTPS系列之CA数字证书

来源:互联网 发布:动漫壁纸软件下载 编辑:程序博客网 时间:2024/06/05 14:17

数字证书的两个作用:
1. 身份验证。确保客户端访问的网站是通过CA认证的可信赖的网站
2. 分发公钥。

简介

PKI(Public Key Infrastructure)公钥基础设施

“遵循标准的利用公钥加密技术提供一套安全基础平台的技术和规范。支持公钥管理并能支持认证,加密,完整性和可追究性服务的基础设施“
“完整的PKI系统具有 CA, 数字证书库,密钥备份及恢复系统,证书作废系统,应用接口。“ –from Baike

CA(Certificate Authority),数字证书认证机构

CA负责签发和管理证书
证书库:CA办法的证书和撤销证书
证书的撤销: 证书撤销列表(CRL)

数字证书

数字证书就是一个公钥,一个CA对证书信息的签名,附加一些信息。

从下图中可以获取几点信息:
1. CA的组织结构: 树形,最顶层为根CA(根证书比较特殊,是自签发),根CA可以授权多个中级CA,中级CA可以授权证书。
2. 证书是有有效期限的,也就是会过期,但PKI提供一种机制解决密钥更新带来的复杂性和马反省,会在过期前的一段时间间隔里启动程序自动更新证书。
这里写图片描述

申请证书

证书申请者会生成一对公钥和私钥,会把公钥和一些其它信息制作成CSR格式的文件发送给RA(r: 目前还不知道RA指的是什么),RA验证信息后会将CSR发给CA,CA制作X.509标准格式的文件(即证书)。
eg: 目前还未申请过SSL证书,以后补上…
记录下iOS开发证书的流程:
1. 通过钥匙串访问工具从证书颁发机构请求证书生成CSR文件与私钥。
2. 在开发者网站上传CSR文件生成证书。(其中苹果应该是做了验证信息与制作证书流程)
3. 开发者通过私钥对代码进行签名,签名包含在Mach-O二进制文件格式中,如果是像脚本那样的非Mach-O二进制文件,则存储在文件扩展属性中。证书中的公钥则可以对代码进行验签。
图from Apple:
这里写图片描述

证书签发流程

  1. 证书内容进行哈希生成消息摘要
  2. 使用CA私钥加密生成数字签名

签名校验流程

  1. 对证书内容哈希生成消息摘要;
  2. 从签发该证书的机构获取公钥(CA公钥),进行验签,如果跟证书内容进行哈希生成的值相同则验签成功,证书未被篡改。

问题:
1. 如何从签发该证书的机构获取公钥;
2. 如何递归验证,直到根CA。
这里写图片描述

总结

  1. 证书主要是用于两种情况: 一个是验证文件是否被篡改(针对苹果开发者证书,进行代码签名)。一个是验证网站是否可信(针对HTTPS).
  2. 证书中的数字签名是对证书内容哈希后使用CA私钥进行签名的,公共密钥则是证书申请者提供开放给所有人的公钥。

参考资料

iOS安全系列之一:HTTPS
浅析CA证书

0 0
原创粉丝点击