2.2. 证书系统子系统概述
2.2.1. 独立和共享实例
Red Hat Certificate System 支持为所有子系统部署单独的 PKI 实例:
- 单独的 PKI 实例作为基于 Java 的 Apache Tomcat 实例运行。
- 单独的 PKI 实例包含一个 PKI 子系统(CA、KRA、OCSP、TKS 或 TPS)。
- 如果在同一物理机或虚拟机(VM)上共存,则单独的 PKI 实例必须使用唯一的端口。
或者,证书系统支持部署共享 PKI 实例:
- 共享 PKI 实例也作为基于 Java 的 Apache Tomcat 实例运行。
- 包含单个 PKI 子系统的共享 PKI 实例与单独的 PKI 实例相同。
- 共享 PKI 实例可能包含每种 PKI 子系统之一的组合:
- 仅限 CA
- 仅限 TKS
- CA 和 KRA
- CA 和 OCSP
- TKS 和 TPS
- CA、KRA、TKS 和 TPS
- CA, KRA, OCSP, TKS, 和 TPS
- etc.
- 共享 PKI 实例允许其实例中包含的所有子系统共享同一端口。
- 如果多个端口位于同一台物理机或虚拟机上,则共享 PKI 实例必须使用唯一端口。
2.2.2. 实例安装前提条件
2.2.2.1. 目录服务器实例可用性
在安装证书系统实例之前,必须使用本地或远程红帽目录服务器 LDAP 实例。有关安装红帽目录服务器的说明,请参阅 红帽目录服务器安装指南。
2.2.2.2. PKI 软件包
Red Hat Certificate System 由以下列出的软件包组成:
- 以下基本软件包组成了证书系统的核心,并包括在基本 Red Hat Enterprise Linux 软件仓库中:
- pki-core
- pki-base
- pki-base-java
- pki-ca
- pki-javadoc
- pki-kra
- pki-server
- pki-symkey
- pki-tools
- 以下列出的软件包在基本 Red Hat Enterprise Linux 订阅频道 中不可用。要安装这些软件包,您必须附加一个 Red Hat Certificate System 订阅池并启用 RHCS 存储库。如需更多信息,请参阅 第 6.8 节 “附加红帽订阅并启用证书系统软件包存储库”。
- pki-core
- pki-console
- pki-ocsp
- pki-tks
- pki-tps
- redhat-pki
- redhat-pki: 包含 pki-core 模块的所有软件包。如果要单独选择 redhat-pki 软件包,建议禁用 pki-core 模块。
- redhat-pki-console-theme
- redhat-pki-server-theme
使用 Red Hat Enterprise Linux 8 系统(可选)使用 第 4 章 支持的平台中列出的受支持硬件安全模块配置的系统,并确保在安装 Red Hat Certificate System 前,所有软件包都保持最新状态。
要安装所有证书系统软件包( pki-javadoc除外),使用 dnf 安装 redhat-pki metapackage:
#
dnf install redhat-pki
或者,您也可以根据需要安装一个或多个顶级 PKI 子系统软件包;请参阅上面的列表。如果使用此方法,请确保也要安装 redhat-pki-server-theme 软件包,以及可选的 redhat-pki-console-theme 和 pki-console 来使用 PKI 控制台。
最后,开发人员和管理员可能还希望安装 JSS 和 PKI javadoc ( jss-javadoc 和 pki-javadoc)。
注意
jss-javadoc 软件包要求您在 Subscription Manager 中启用 Server-Optional 存储库。
2.2.2.3. 实例安装和配置
pkispawn 命令行工具用于安装和配置新的 PKI 实例。它消除了对独立安装和配置步骤的需求,并可以作为批处理进程以交互方式运行,或者全部组合(带有提示密码的批量进程)。实用程序不提供安装或配置基于浏览器的图形界面的方法。
有关使用信息,请使用 pkispawn --help 命令。
pkispawn 命令:
- 从纯文本配置文件(
/etc/pki/default.cfg
)读取其默认name=value
对。 - 以互动方式或自动覆盖指定的任何对,并以 Python 字典的形式存储最终结果。
- 执行一系列有序的 scriptlet 来执行子系统和实例安装。
- 配置 scriptlet 将 Python 字典打包为 JavaScript Object Notation (JSON)数据对象,然后传递给基于 Java 的配置 servlet。
- 配置 servlet 利用此数据来配置新的 PKI 子系统,然后将控制权传递回 pkispawn 可执行文件,从而完成 PKI 设置。最终部署文件的副本保存在
/var/lib/pki/instance_name/ <subsystem> /registry/<subsystem>/deployment.cfg
中
详情请查看
pkispawn
手册页。
默认配置文件
/etc/pki/default.cfg
是一个纯文本文件,其中包含在上述过程开始时读取的默认安装和配置值。它由 name=value
对组成,分为 [DEFAULT]
, [Tomcat]
, [CA]
, [KRA]
, [OCSP]
, [TKS]
, 和 [TPS]
部分。
如果您将
-s
选项与 pkispawn 搭配使用,并且指定子系统名称,则仅读取该子系统的部分。
这些部分具有层次结构:在子系统部分中指定的
name=value
对将覆盖 [Tomcat]
部分中的对,后者又覆盖 [DEFAULT]
部分中的对。默认对可以通过交互式输入或指定 PKI 实例配置文件中的对覆盖。
注意
每当使用非交互式文件覆盖默认
name=value
对时,它们可以存储在任何位置并随时指定。这些文件在 pkispawn man page 中被称为 myconfig.txt
,但它们通常被称为 .ini
文件,或者通常被称为 PKI 实例配置文件。
如需更多信息,请参阅
pki_default.cfg
手册页。
Configuration Servlet 由存储在
/usr/share/java/pki/pki-certsrv.jar
中的 Java 字节码组成,作为 com/netscape/certsrv/system/ConfigurationRequest.class
。Servlet 使用 pkispawn 从配置脚本处理作为 JSON 对象传递的数据,然后使用与 com/netscape/certsrv/system/ConfigurationResponse.class
在相同的文件中提供的 Java bytecode 来返回到 pkispawn。
交互式安装示例仅涉及以
root
用户身份在命令行上运行 pkispawn 命令:
#
pkispawn
重要
目前,交互式安装仅存在于非常基本的部署中。例如,在使用克隆、Elliptic Curve Curve Cryptography (ECC)、外部 CA、硬件安全模块(HSM)、子 CA 和其他级 CA 等高级功能时,必须在单独的配置文件中提供必要的覆盖参数。
非交互式安装需要 PKI 实例配置覆盖文件,进程可能类似以下示例:
#
mkdir -p /root/pki- 使用文本编辑器(如 vim )创建名为
/root/pki/ca.cfg
的配置文件,其内容如下:[DEFAULT] pki_admin_password=<password> pki_client_pkcs12_password=<password> pki_ds_password=<password>
#
pkispawn -s CA -f /root/pki/ca.cfg
有关各种配置示例,请参阅
pkispawn
手册页。
2.2.2.4. 实例删除
要删除现有的 PKI 实例,请使用 pkidestroy 命令。它可以以交互方式运行,也可以作为批处理运行。使用 pkidestroy -h 在命令行中显示详细的使用信息。
pkidestroy 命令在 PKI 子系统部署配置文件中读取,该文件在创建子系统时存储(
/var/lib/pki/instance_name/ <subsystem> /registry/<subsystem> /deployment.cfg
),使用 read-in 文件来删除 PKI 子系统,然后在没有额外的子系统时删除 PKI 实例。如需更多信息,请参阅 pkidestroy
手册页。
使用 pkidestroy 的交互式删除过程可能类似如下:
#
pkidestroy
Subsystem (CA/KRA/OCSP/TKS/TPS) [CA]:
Instance [pki-tomcat]:
Begin uninstallation (Yes/No/Quit)? Yes
Log file: /var/log/pki/pki-ca-destroy.20150928183547.log
Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg.
Uninstalling CA from /var/lib/pki/pki-tomcat.
rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target'
Uninstallation complete.
非互动删除过程可能类似以下示例:
#
pkidestroy -s CA -i pki-tomcat
Log file: /var/log/pki/pki-ca-destroy.20150928183159.log
Loading deployment configuration from /var/lib/pki/pki-tomcat/ca/registry/ca/deployment.cfg.
Uninstalling CA from /var/lib/pki/pki-tomcat.
rm '/etc/systemd/system/multi-user.target.wants/pki-tomcatd.target'
Uninstallation complete.
2.2.3. 执行管理(systemctl)
2.2.3.1. 启动、停止、重启和获取状态
Red Hat Certificate System 子系统实例可以使用 Red Hat Enterprise Linux 8 上的 systemctl 执行管理系统工具停止并启动:
#
systemctl start <unit-file>@instance_name.service
#
systemctl status <unit-file>@instance_name.service
#
systemctl stop <unit-file>@instance_name.service
#
systemctl restart <unit-file>@instance_name.service
<unit-file> 具有以下值之一:
pki-tomcatd
Withwatchdog
disabledpki-tomcatd-nuxwdog
Withwatchdog
enabled
有关
watchdog
服务的详情,请参考 Red Hat Certificate System Administration Guide中的 第 2.3.10 节 “密码和 Watchdog (nuxwdog)” 和使用证书系统 Watchdog Service 部分。
注意
在 RHCS 10 中,这些 systemctl 操作支持 pki-server别名: pki-server <command> subsystem_instance_name 是 systemctl <command> pki-tomcatd@<instance>.service 的别名。
2.2.3.2. 自动启动实例
Red Hat Enterprise Linux 中的
systemctl
工具管理服务器上每个进程的自动启动和关闭设置。这意味着,当系统重启时,一些服务可以被自动重启。系统单元文件控制服务启动,以确保服务以正确顺序启动。systemd
服务和 systemctl
工具信息包括在 为 Red Hat Enterprise Linux 8配置基本系统设置 指南中。
证书系统实例可由
systemctl
管理,因此这个工具可以设置是否自动重启实例。创建证书系统实例后,它会在引导时启用。这可以通过使用 systemctl
来更改:
#
systemctl disable pki-tomcatd@instance_name.service
重新启用实例:
#
systemctl enable pki-tomcatd@instance_name.service
注意
systemctl enable 和 systemctl disable 命令不会立即启动或停止证书系统。
2.2.4. 进程管理(pki-server 和 pkidaemon)
2.2.4.1. pki-server 命令行工具
Red Hat Certificate System 的主要进程管理工具是 pki-server。使用 pki-server --help 命令,并查看
pki-server
man page 以获得使用信息。
pki-server 命令行界面(CLI)管理本地服务器实例(如服务器配置或系统证书)。按如下方式调用 CLI:
$
pki-server [CLI options] <command> [command parameters]
CLI 使用服务器实例的配置文件和 NSS 数据库,因此 CLI 不需要任何之前的初始化。由于 CLI 直接访问文件,它只能由 root 用户执行,而且不需要客户端证书。此外,无论服务器的状态如何,CLI 都可以运行;它不需要正在运行的服务器。
CLI 支持以分级结构组织的多个命令。要列出顶级命令,请在没有任何附加命令或参数的情况下执行 CLI:
$
pki-server
某些命令包含子命令。若要列出它们,可使用命令名称执行 CLI,并且无附加选项。例如:
$
pki-server ca$
pki-server ca-audit
要查看命令用法信息,请使用
--help
选项:
$
pki-server--help
$
pki-server ca-audit-event-find--help
2.2.4.2. 使用 pki-server 启用和禁用已安装的子系统
要启用或禁用已安装的子系统,请使用
pki-server
工具。
#
pki-server subsystem-disable -i instance_id subsystem_id
#
pki-server subsystem-enable -i instance_id subsystem_id
使用有效的子系统标识符替换 subsystem_id :
ca
、kra
、tks
、ocsp
或 tps
。
注意
一个实例只能具有每种类型的子系统之一。
例如,要在名为
pki-tomcat
的实例中禁用 OCSP 子系统:
#
pki-server subsystem-disable -i pki-tomcat ocsp
列出实例的已安装的子系统:
#
pki-server subsystem-find -i instance_id
显示特定子系统的状态:
#
pki-server subsystem-find -i instance_id subsystem_id
2.2.4.3. pkidaemon 命令行工具
Red Hat Certificate System 的另一个进程管理工具是 pkidaemon 工具:
pkidaemon {start|status} instance-type [instance_name]
- pkidaemon status tomcat - 提供状态信息,如 on/off、端口、系统上所有 PKI 子系统的每个 PKI 子系统的 URL。
- pkidaemon status tomcat instance_name - 提供状态信息,如 on/off、端口、特定实例的每个 PKI 子系统的 URL。
- pkidaemon start tomcat instance_name.service - 使用 systemctl 内部使用。
如需更多信息,请参阅
pkidaemon
手册页。
2.2.4.4. 查找子系统 Web 服务 URL
CA, KRA, OCSP, OCSP, TKS, 和 TPS 子系统有用于代理的 Web 服务页面,以及常规用户和管理员(如果适用)。可以通过子系统的安全最终用户端口打开子系统主机的 URL 来访问这些 Web 服务。例如,对于 CA:
https://server.example.com:8443/ca/services
注意
要获取实例的所有接口、URL 和端口的完整列表,请检查该服务的状态。例如:
pkidaemon status instance_name
每个子系统的主要 Web 服务页面都有可用服务页面列表;这些内容在 表 2.1 “默认 Web 服务页面” 中进行了概述。要特别访问任何服务,请访问适当的端口,并将相应的目录附加到 URL。例如,要访问 CA 的末尾实体(常规用户)Web 服务:
https://server.example.com:8443/ca/ee/ca
如果没有配置 DNS,则可以使用 IPv4 或 IPv6 地址来连接到服务页面。例如:
https://192.0.2.1:8443/ca/services https://[2001:DB8::1111]:8443/ca/services
注意
任何人都可以访问子系统的最终用户页面。但是,访问代理或管理 Web 服务页面要求在 Web 浏览器中发布代理或管理员证书并安装代理或管理员证书。否则,对 Web 服务的身份验证会失败。
表 2.1. 默认 Web 服务页面
port | 用于 SSL/TLS | 用于客户端身份验证[a] | Web 服务 | Web 服务位置 |
---|---|---|---|---|
证书管理器 | ||||
8080 | 否 | 结束实体 | ca/ee/ca | |
8443 | 是 | 否 | 结束实体 | ca/ee/ca |
8443 | 是 | 是 | 代理 | ca/agent/ca |
8443 | 是 | 否 | 服务 | ca/services |
8443 | 是 | 否 | 控制台(Console) | pkiconsole https://host:port/ca |
密钥恢复授权机构 | ||||
8080 | 否 | 结束实体[b] | kra/ee/kra | |
8443 | 是 | 否 | 结束实体[b] | kra/ee/kra |
8443 | 是 | 是 | 代理 | kra/agent/kra |
8443 | 是 | 否 | 服务 | kra/services |
8443 | 是 | 否 | 控制台(Console) | pkiconsole https://host:port/kra |
在线证书状态管理器 | ||||
8080 | 否 | 结束实体[c] | ocsp/ee/ocsp | |
8443 | 是 | 否 | 结束实体[c] | ocsp/ee/ocsp |
8443 | 是 | 是 | 代理 | ocsp/agent/ocsp |
8443 | 是 | 否 | 服务 | ocsp/services |
8443 | 是 | 否 | 控制台(Console) | pkiconsole https://host:port/ocsp |
令牌密钥服务 | ||||
8080 | 否 | 结束实体[b] | tks/ee/tks | |
8443 | 是 | 否 | 结束实体[b] | tks/ee/tks |
8443 | 是 | 是 | 代理 | tks/agent/tks |
8443 | 是 | 否 | 服务 | tks/services |
8443 | 是 | 否 | 控制台(Console) | pkiconsole https://host:port/tks |
令牌处理系统 | ||||
8080 | 否 | 未安全的服务 | tps/tps | |
8443 | 是 | 安全服务 | tps/tps | |
8080 | 否 | 企业安全客户端电话主页 | tps/phoneHome | |
8443 | 是 | 企业安全客户端电话主页 | tps/phoneHome | |
8443 | 是 | 是 | 管理、代理和 Operator 服务 [d] | tps/ui |
[b]
虽然此子系统类型具有端实体端口和接口,但这些最终用户服务无法通过 Web 浏览器访问,因为其他最终用户服务是:
[c]
虽然 OCSP 有端实体端口和接口,但这些最终用户服务无法通过 Web 浏览器访问,因为其他最终用户服务是:最终用户 OCSP 服务可通过发送 OCSP 请求来访问。
[d]
代理、管理员和操作器服务都通过同一 Web 服务页面访问。每个角色只能访问仅对该角色成员可见的特定部分。
|
2.2.4.5. 启动证书系统控制台
重要
此控制台已弃用。
CA、KRA、OCSP 和 TKS 子系统有一个 Java 接口,它可以被访问来执行管理功能。对于 KRA、OCSP 和 TKS,这包括配置日志记录和管理用户和组等非常基本的任务。对于 CA,这包括创建证书配置集和配置发布等其他配置设置。
通过使用
pkiconsole
工具通过 SSL/TLS 端口连接到子系统实例来打开控制台。这个工具使用以下格式:
pkiconsole https://server.example.com:admin_port/subsystem_type
subsystem_type 可以是
ca
、kra
、ocsp
或 tks
。例如,这将打开 KRA 控制台:
pkiconsole https://server.example.com:8443/kra
如果没有配置 DNS,则可以使用 IPv4 或 IPv6 地址来连接到控制台。例如:
https://192.0.2.1:8443/ca https://[2001:DB8::1111]:8443/ca