介绍
证书,秘钥和信任服务编程指南包含了证书,秘钥和信任服务的综述,讨论了开发者最常用的功能和数据结构,并举例了如何在你自己的应用当中使用证书,秘钥和信任服务。
证书,秘钥和信任服务提供了一系列用来核实证书,评估信用和生成不对称秘钥的C语言API。你可以使用这些服务来做一下事情:
添加证书到钥匙串
找到与一个身份相关联的证书和秘钥
生成一对不对称秘钥并保存到钥匙串里
获得一个在评估证书信用时使用的策略对象
检索OS X存储的锚证书
设置在评估证书信用使用时的参数
评估证书信用
获得关于信用评估结果的细节信息
另外,证书,秘钥和信任服务包含了许多使在OS X 安全APIs和CSSM(公共安全服务管理器 Common Security Services Manager)之间工作更简单的函数。
证书,秘钥和信任服务可以使用在Carbon, Cocoa和运行在OS X当中的UNIX应用。
证书,秘钥和信任服务概念
证书,秘钥和信任服务是一个用来认证和授权用户和处理使用秘钥和证书的函数和数据结构集合。
因为在OS X 和 iOS中,证书和秘钥存储在钥匙串里,所以许多在这个API里的函数必须和在钥匙串服务API一起使用
证书,秘钥和身份
数字证书是一组用来确认证书持有者的身份或发送者的身份的数据。
比如证书包含了如下信息
证书的发行人
证书的持有者
有效期
证书持有人的公钥
证书扩展部分,包含了比如与证书相关的私钥的所允许的使用行为这样的额外信息
来自证书认证机构的数字签名用来确保证书未被更改,并指明该发行人的身份
每个证书都使用另一个证书来验证,创建了一个以根证书结束的证书链。证书的签发方被称为证书机构(CA),根证书的拥有者就是是根认证机构。
每一个公钥都是一个公私密钥对的一半部分。如名字所示,公钥可以被任何人持有,但是密钥只可以被秘钥持有者私密地藏起来。被密钥加密的数据只能被公钥解密,反之亦然。为了能够加密和解密,一个特定的用户必须同时持有一个公钥(一般包含在一个证书里)和一个私钥。
一个证书和一个与此证书相关联的私钥的组合就是公认的身份。证书,秘钥和信任服务包括了寻找证书或者与一个身份相关的秘钥和当给出搜索标准时寻找一个身份的一系列函数。搜索标准包含了秘钥的允许使用行为。
证书,秘钥和信任服务和CDSA(通用数据安全体系结构 Common Data Security Architecture)
在iOS当中,钥匙串服务 API提供了所有可以用来操作钥匙串项目的函数。
在OS X当中,证书,秘钥和信任服务和其他安全API建立在开源的CDSA上和它的编程接口CSSM。
证书,秘钥和信用服务提供了执行大多数应用所需要的操作的函数,包括生成秘钥对,检索证书或者与一个身份相关联的秘钥,检索来自系统的根证书,让证书生效和评估信用。基础的CSSM API提供了更多的特殊的应用所感兴趣的能力,比如被设计用来管理网络或者计算机安全的应用。因为这个原因,证书,秘钥和信用服务API提供了许多返回或者建立CSSM结构以便让你在证书,秘钥和信用服务和CSSM之间自由使用的函数。
策略和信任
某些数字证书的特性(比如证书扩展)是为了建立一个证书的信用等级。一个证书的信任级别是用来回答这个问题“我应该相信这个证书的这个行为吗?“一个信任策略是一组规则,它指定了如何评估证书,以查看是否有效在一个特定级别的信任。
例如,在OS X的applex509tp模块实现了一个信任策略称为S/MIME的策略,除了基本的证书验证这个策略还规定了如何验证电子邮件地址。当您在证书、密钥和信任服务API中建立信任评估时,您将指定使用哪个策略来评估信任。这就是你如何使用你想要验证证书有效性的方式。例如,如果您指定SSL政策,你实际上是在问证书是否能受信用地用于在网络上建立安全连接。
一些策略是有选项的,比如证书撤销列表策略,其中包含了标志。当设置了CSSM_TP_ACTION_REQUIRE_CRL_PER_CERT 标志,除非在证书链当中的所用证书都已经用证书撤销列表成功地验证了,否则这个证书就失效了。AppleX509TP信任策略选择结构定义在cssmapple.h中。证书,秘钥和信任服务API在每个策略当中使用默认值。
未完待续
Apple文档-Introduction