16.6. 管理证书数据库
每个证书证书系统启动;System 实例有一个证书数据库,该数据库在其内部令牌中维护。此数据库包含属于在 CertificateCertificate Systemnbsp 中安装的子系统的证书;System instance 和各种 CA 证书,用于验证它们接收的证书。
本节介绍如何使用 CertificateCertificate Systemnbsp;System 窗口查看证书数据库的内容、删除不需要的证书以及更改数据库中安装的 CA 证书的信任设置。有关在数据库中添加证书的详情请参考 第 16.6.1 节 “在证书系统数据库中安装证书”。
注意
CertificateCertificate Systemnbsp;System 命令行实用工具 certutil 可以用来通过编辑信任设置和删除证书来管理证书数据库。有关这个工具的详情,请参考 http://www.mozilla.org/projects/security/pki/nss/tools/。
管理员应定期检查证书数据库的内容,以确保它不会包含任何不需要的 CA 证书。例如,如果数据库包含不应在 PKI 设置中不应信任的 CA 证书,请删除它们。
16.6.1. 在证书系统数据库中安装证书
如果为子系统发布新的服务器证书,则必须将其安装到该子系统数据库中。此外,必须在子系统数据库中安装用户和代理证书。如果证书由外部 CA 发布,则通常需要安装对应的 CA 证书或证书链。
证书可以通过控制台的证书设置向导或使用 certutil 工具安装在子系统证书数据库中。
16.6.1.1. 通过控制台安装证书
- CertificateCertificate Systemnbsp;System 子系统使用的任何证书
- 来自外部 CA 或其他证书证书系统nbsp 的任何可信 CA 证书;系统 CA
- 证书链
证书链包括一组证书:主题证书、可信根 CA 证书以及将主题证书链接到可信根所需的任何中间 CA 证书。但是,向导导入的证书链必须只包含 CA 证书;任何证书都不能是一个用户证书。
在证书链中,链中的每个证书都被编码为一个独立的 DER 编码对象。当向导导入证书链时,它会在另一个对象后导入这些对象,它们的所有方法是链到最后一个证书,这可能不是 root CA 证书。如果链中的任何证书已在本地证书数据库中安装,向导会将现有证书替换为链中的现有证书。如果链包含中间 CA 证书,向导会将它们添加到证书数据库中,作为 不信任的 CA 证书。
子系统控制台使用相同的向导来安装证书和证书链。要在本地安全数据库中安装证书,请执行以下操作:
- 打开控制台。
pkiconsole https://server.example.com:secure_port/subsystem_type
- 在 Configuration 选项卡中,从左侧导航树中选择 System Keys and Certificates。
- 有两个标签可以安装证书,具体取决于子系统类型和证书类型。
- CA 证书 标签页是安装 CA 证书和证书链。对于证书管理器,此选项卡用于第三方 CA 证书或其他证书证书系统,系统 CA 证书;所有本地 CA 证书均安装在本地 证书 选项卡中。对于所有其他子系统,所有 CA 证书和链都通过此标签页安装。
- 本地证书 标签页是在安装所有服务器证书、子系统证书和本地证书(如 OCSP 签名或 KRA 传输)的位置。
选择相应的选项卡。 - 要在 本地证书选项卡中安装证书,请单击 。要在 CA 证书选项卡中安装证书,点 。两者都会打开证书设置向导。
- 当向导打开后,选择" 安装证书 "单选按钮,然后单击"
- 选择要安装的证书类型。下拉菜单选项与用于创建证书的选项相同,具体取决于子系统类型,还有更多选项来安装跨对证书。
- 粘贴到证书正文中,包括 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----,并将其指定到文本区域,或者指定绝对文件位置;这必须是本地文件。证书类似如下:
-----BEGIN CERTIFICATE----- MIICKzCCAZSgAwIBAgIBAzANgkqkiG9w0BAQQFADA3MQswCQYDVQQGEw JVUzERMA8GA1UEChMITmV0c2NhcGUxFTATBgNVBAsTDFN1cHJpeWEncy BDQTAeFw05NzEwMTgwMTM2MjVaFw05OTEwMTgwMTM2MjVaMEgxCzAJBg NVBAYTAlVTMREwDwYDVQQKEwhOZXRzY2FwZTENMAsGA1UECxMEUHawcz EXMBUGA1UEAxMOU3Vwcml5YSBTaGV0dHkwgZ8wDQYJKoZIhdfNAQEBBQ ADgY0AMIGJAoGBAMr6eZiPGfjX3uRJgEjmKiqG7SdATYzBcABu1AVyd7 chRFOGD3wNktbf6hRo6EAmM5R1Askzf8AW7LiQZBcrXpc0k4du+2j6xJ u2MPm8WKuMOTuvzpo+SGXelmHVChEqooCwfdiZywyZNmgaMa2MS6pUkf QVAgMBAAGjNjA0MBEGCWCGSAGG+EIBAQQEAwIAgD -----END CERTIFICATE-----
- 向导显示证书详情。查看指纹,以确保这是正确的证书,或使用按钮返回并提交不同的证书。为证书指定 nickname。向导会安装证书。
- 签署证书的任何 CA 都必须被子系统信任。确保该 CA 的证书存在于子系统的证书数据库中(内部或外部)以及它被信任。如果没有列出 CA 证书,请将证书作为可信 CA 添加到证书数据库中。如果列出了 CA 的证书但不受信任的,请将信任设置为可信,如 第 16.7 节 “更改 CA 证书的信任设置” 所示。安装未存储在证书证书系统的 CA 发布的证书时,将 CA 的证书链添加到数据库。要将 CA 链添加到数据库,请将 CA 链复制到文本文件,再次启动向导,并安装 CA 链。
16.6.1.2. 使用 certutil 安装证书
要在 CertificateCertificate Systemnbsp 中安装子系统证书 ; 系统实例的安全数据库使用 certutil,请执行以下操作:
- 打开子系统的安全数据库目录。
cd /var/lib/pki/instance_name/alias
- 使用 -A 运行 certutil 命令以添加证书,并指向包含 CA 发布的证书的文件。
certutil -A -n cert-name -t trustargs -d . -a -i certificate_file
注意如果 CertificateCertificate Systemnbsp;System instance 的证书和密钥存储在 HSM 中,则使用 -h 选项指定令牌名称。例如:certutil -A -n "ServerCert cert-instance_name" -t u,u,u -d . -a -i /tmp/example.cert
有关使用 certutil 命令的详情请参考 http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html。
16.6.1.3. 关于 CA 证书链
任何支持证书的客户端或服务器软件都会在其证书数据库中维护一系列可信 CA 证书。这些 CA 证书决定了软件可以验证哪些其他证书。在最简单的情形中,软件只能验证其有证书的其中一个 CA 发布的证书。可信 CA 证书也可能是 CA 证书链的一部分,每个 CA 在证书层次结构中签发。
链中的第一个证书以特定于上下文的方式进行处理,具体根据它的导入方式而有所不同。对于 Mozilla Firefox,此处理取决于在正在下载的对象上使用的 MIME 内容类型。对于 Red Hatnbsp;Hat 服务器,它取决于服务器管理界面中选择的选项。
后续证书都相同。如果证书包含 Netscape 证书类型证书扩展中的 SSL-CA 位,且本地证书数据库中尚不存在,则它们会添加为不信任的 CA。只要链中有一个可信的 CA,它们可以用于证书链验证。