第 15 章 管理证书/密钥加密策略


本章介绍了如何在加密令牌上管理证书/密钥令牌数据库的说明,特别是如何为各种场景导入和验证证书。

关于加密令牌

有关 NSS 软令牌的详情,请参考 第 2.3.7.1 节 “NSS 软令牌(内部令牌)”

15.1. 关于 certutilPKICertImport

certutil 命令由网络安全服务(NSS)提供。certutil 用于验证和导入证书。以下是使用 certutil 的基本信息,但 PKICertImport 是我们的 wrapper 脚本,用于安全验证和导入证书。使用 certutil 来这样做,需要多个命令调用,并正确用法超出了本文档的范围。

15.1.1. certutil 基本用法

certutil [command] [options]
每个 certutil 调用都使用命令标志,通常由大写字母表示,以及控制命令的作用的一系列选项。如果某个选项使用值,则该值将在 "<" 和 ">" 符号之间命名。

15.1.2. PKICertImport 基础知识使用

PKICertImport [options]
每个 PKICertImport 调用都使用一系列选项来验证和导入指定证书。与 certutil 的广泛用例不同,PKICertImport 仅专注于安全导入和验证证书。有关可用选项的更多信息,请参阅 第 15.1.4 节 “Common certutilPKICertImport 选项”
注意
PKICertImport 在执行过程中多次提示输入 NSS DB 和/或 HSM 密码。这应该会因为 PKICertImport 必须多次与 NSS DB 交互。要避免重复输入 NSS DB 密码,请通过 -f <filename> 指定密码文件。完成后,请确保删除密码文件。

15.1.3. certutil 常用命令

以下命令特定于 certutil,并概述了几个常用命令。PKICertImport 不兼容,也不需要这些命令标志。

certutil -A

a 表示 "添加"证书。它要求证书导入(-i)、证书的别名(-n)和证书的一系列信任标志(-t)。

certutil -V

-V 命令表示"验证"证书。它需要证书别名来验证(-n)以及要执行的验证类型(-u)。

certutil -D

-D 命令表示"删除"证书。它需要一个证书别名(-n)才能删除。
请注意,它只删除证书的 PUBLIC KEY 部分,如果存在,则 WILL 不会删除任何私钥。

certutil -M

-M 命令表示"修改"证书。它要求修改证书别名(-n),以及一系列信任标志(-t)来为其提供证书。

certutil -L

-L 命令表示证书或所有证书。如果给出 nickname 选项(-n),它将列出该证书的详细信息,否则如果省略,它将列出所有证书的常规信息。
certutil -L 的结果会按 nickname 及其信任信息显示每个证书。例如:
表 15.1. 证书别名和信任信息
证书 Nickname

Trust Attributes
SSL, S/MIME, JAR/XPI

caSigningCert pki-ca1
CT, C, C
注意
certutil -L 显示的信任属性与使用 -t 选项指定的内容对应。
certutil -L 不修改数据库,因此可以根据需要安全地执行。

15.1.4. Common certutilPKICertImport 选项

遵循以下步骤时,请确保值与您的特定部署场景相关且正确。其中一些选项也可用于 PKICertImport

-n <nickname>

-n <nickname > 选项指定证书的 nickname。这可以是任何文本,仅用作证书的引用。它必须是唯一的。
根据您的配置更新这个值。

-d <directory>

-d <directory > 选项指定正在使用的 NSS DB 目录的路径。通常,我们假设您已在这个目录中,并使用 "." 引用当前目录。
根据您的配置更新这个值。

-t <trust>

-t <trust > 选项指定证书的信任级别。
信任有三种主要类别:
  • TLS 的信任
  • 对电子邮件的信任
  • 对象签名的信任
每个信任位置可以有一个或多个信任字母,用于指定所需的信任级别。我们使用以下信任字母是 cCT
  • c 指出此证书应该是证书颁发机构(CA)。
  • c 表示这是用于签名服务器证书的可信证书颁发机构( C 表示小写 c,因此您不需要同时指定这两个证书)。
  • T 表示此证书是签名客户端证书的可信颁发机构(T 表示小写 c,因此您不需要同时指定 Tc)。
要为每个位置指定信任标志,请使用逗号分隔字母。例如,选项 -t CT,C,c 表示为客户端和服务器 TLS 证书签名证书、签名服务器电子邮件证书(S/MIME)并且是用于对象签名的有效 CA (尽管不受信任的)。
  • 这样可确保如果此证书为另一个证书签名,则该证书用于对象签名,它将被视为无效。
使用 -t、、 可以指定信任(或缺少信任)。
要查看数据库中所有证书的信任级别,请运行:
  • certutil -L -d
  • 将列出每个证书的 nickname,并在行末尾指定信任标志。
请参阅 -h 选项中的 HSMs 备注。
请注意,在 certutil man page 中指定更多信任级别。要参考本文档,请在正确安装了 certutil 的系统中运行 man certutil 命令。

-h <HSM>

-h <HSM > 选项指定要执行操作的 HSM 名称。
-h 选项与 -t 选项不兼容,因为 HSM 无法存储信任。只有 NSS DB 可以存储信任,因此使用 certutil -A 命令或 certutil -M 命令以及 -h <HSM&gt; 将失败。反之,在没有 -h 选项的情况下,在单独的 certutil -M 命令中指定所需的信任级别。
根据您的配置更新这个值。

-e

-e 选项指定检查签名的有效性,与 certutil -V 命令一起使用时。PKICertImport 始终执行证书签名请求验证,且不知道 -e 选项。

-a

a 选项指定问题中的键采用 PEM (ASCII)格式。

-i <certificate>

-i <certificate > 选项指定证书的路径。这只在 certutil -A 命令中使用,以指定要导入的证书的路径。
根据您的配置更新这个值。

-u <usage>

-u < usage> 选项指定使用证书与 certutil -V 命令一起使用时进行验证。
以下部分介绍了几个使用字母。
  • -U C 代表验证客户端 TLS 证书。请注意,这主要接受任何证书,但会检查过期日期和签名。
  • -U V 代表验证服务器 TLS 证书。请注意,这将拒绝 CA 证书,并将检查过期日期和签名。
  • -U L 代表验证 CA TLS 证书。请注意,这将验证信任标志(查看是否存在 c ),并将检查密钥的使用以确保密钥是 CA 密钥。这也检查过期和签名。
  • -U O 代表验证 OCSP 状态响应器证书。请注意,这会检查到期和签名。
  • -u J 代表验证对象签名证书。请注意,这会检查到期和签名。
如果指定了错误使用选项,或者证书上的信任标记错误(如缺少 CA TLS 证书的 c 标志),certutil -V 将给出不正确的结果。
注意
在 certutil manpage 中指定更多用法选项。要参考本文档,请在正确安装了 certutil 的系统中运行 man certutil 命令。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.