越来越多的身份验证机制基于加密过程。在这种情况下,为证书拥有者指派密码密钥的数字证书就起着重要作用。此类证书做通讯使用,并且能在例如公司 ID 卡类的地方找到。证书的生成和管理大多由将其作为商业服务来提供的正式机构操作。但在某些情况下,您自己来执行这些任务也许更有意义。例如,如果某家公司不希望将个人数据透露给第三方。
YaST 为此提供了两个模块,它们为数字 X.509 证书提供了基本管理功能。以下部分叙述了数字证书的基础知识以及如何用 YaST 创建和管理此类证书。有关详细信息,请参考http://www.ietf.org/html.charters/pkix-charter.html
数字认证使用密码进程来加密数据,从而防止未经授权的用户访问这些数据。用户数据是使用另一种数据记录(即密钥)来进行加密的。系统在一个数学进程中将密钥应用于用户数据,从而生成一种经过更改的数据记录,在该数据记录中将不再能识别出原始内容。现在广泛使用的是非对称加密(公共密钥方法)。密钥总是成对出现的:
私用密钥必须由密钥拥有者安全保管。如果不慎泄漏私用密钥对,就会损害该密钥对,并且导致它不能使用。
密钥拥有者为第三方发布公共密钥
因为公共密钥进程被广泛使用,所以有许多公共密钥处于流通中。要成功使用此系统,要求每个用户确保公共密钥真实属于所假定的拥有者。为用户颁发公共密钥,要由可信的组织通过公共密钥证书确认。这样的证书中包含密钥拥有者的姓名、相应的公共密钥和证书颁发者的电子签名。
颁发和签署密钥证书的可信机构通常是一个基础证书机构的一部分,它也同时对证书的其他方面的工作负责,例如,证书的发行、取消和更新。这种基础结构通常称为公共密钥基础结构或 PKI。OpenPGP 标准是一种常见的 PKI,在其中用户可以不通过中心授权点而自行发布证书。如果有“值得信任的 Web”中其他方的签名,这些证书就变得可信。
X.509 公共密钥基础结构 (PKIX) 是由 IETF(因特网工程事务组)定义的另一种模型,现在用作几乎所有公开使用的 PKI 的样本。在此模型中,由 证书授权机构 (CA) 在一个分级的树结构中执行身份验证。树的根是根 CA, 它为所有的子 CA 提供保证。最低级别的子 CA 颁发用户证书。可在根 CA 中跟踪到的用户证书是可信的。
这样的 PKI 的安全性完全取决于 CA 证书的可信性。为了使认证操作对 PKI 客户透明,PKI 操作员定义了一个 认证操作细则 (CPS),其中定义了证书管理的过程。这样可确保 PKI 颁发的证书都是可信的。
X.509 证书是一个具有多个固定字段和可选的附加扩展的数据结构。固定字段主要包括密钥拥有者、公共密钥和与证书发布 CA 相关的数据(名称和签名)。出于安全原因,证书只能具有有限的有效期,因此还为此日期提供了一个字段。CA 确保了证书在指定期间的有效性。在期满之前, CPS 通常会要求 PKI(发行 CA)创建和分发一个新的证书。
扩展中可以包含任何附加信息。应用程序通常无需能够对扩展求值,除非它被标识为 关键。如果应用程序不能识别关键扩展,它就必须拒绝此证书。某些扩展只针对某个特别应用程序有用,例如签名和加密。
表 42.1版本 3.中, 显示了基础 X.509 证书的字段。
表 42.1. X.509v3 证书
字段 | 内容 |
|---|---|
版本 | 证书版本,例如 v3 |
序列号 | 独一无二的证书 ID(一个整数) |
签名 | 用于对证书签名的 ID 算法。 |
颁发者 | 证书发布机构 (CA) 的唯一名称 (DN)。 |
有效性 | 有效期 |
主题 | 证书拥有者的唯一名称 (DN)。 |
主题公共密钥的信息 | 所有者的公共密钥以及 ID 的算法 |
发行者的唯一 ID | 发行 CA 的唯一密钥(可选) |
主题唯一密钥 | 所有者的唯一密钥(可选) |
扩展 | 可选的其他信息, 例如 “KeyUsage”、“BasicConstraints” 等。 |
如果一个证书在期满之前就边为“不可信”,必须立即停止使用。例如,当私用密钥泄漏时,则必须这样做。这尤其适用于私用密钥属于 CA 而不是用户证书。在这种情况下,必须立即阻止相关 CA 发布的所有用户证书。如果阻止了某证书,PKI(对其负责的 CA)就必须通过 证书撤消列表(CRL)将此信息提供给相关方。
这些列表由 CA 定期提供给 CRL 分发点 (CDP)。在证书里命名一个 CDP 扩展(可选),这样,检查员就可取得一个当前 CRL 用于校验。实现此目的的一种方法是使用联机证书状态协议 (OCSP)。CRL 的真实性有发行 CA 的签名确认。表 42.2 “X.509 证书撤消列表 (CRL)” 显示 X.509 CRL 的基础部分。
表 42.2. X.509 证书撤消列表 (CRL)
字段 | 内容 |
|---|---|
版本 | CRL 版本,例如 v2。 |
签名 | 用于对证书签名的算法 ID 。 |
颁发者 | CRL 发布者(通常是证书发布 CA)的唯一名称 (DN)。 |
此更新 | 此 CRL 的发布时间(日期、时间)。 |
下次更新 | 下一 CRL 的发布时间(日期、时间)。 |
已撤消的证书列表 | 每项包含证书的序列号、撤消时间和可选扩展(CRL 项扩展)。 |
扩展 | 可选 CRL 扩展。 |
必须使用 储存库 使CA 的证书和 CRL 能够被公共访问。因为证书和 CRL 由于有签名而不能被伪造,所以不需要以特殊的方式来保证储存库本身的安全。相反地,它尽可能简单快速地允许访问。因此,通常在 LDAP 或 HTTP 服务器上提供证书。有关 LDAP 的解释,参见 第 36 章 LDAP - 目录服务。 第 40 章 Apache HTTP 服务器 包含 HTTP 服务器的信息。