2.2. 证书系统子系统概述
2.2.2. 实例安装先决条件 复制链接链接已复制到粘贴板!
2.2.2.1. 目录服务器实例可用性 复制链接链接已复制到粘贴板!
在安装证书系统实例之前,必须使用本地或远程红帽目录服务器 LDAP 实例。有关安装红帽目录服务器的说明,请参阅 红帽目录服务器安装指南。
2.2.2.2. PKI 软件包 复制链接链接已复制到粘贴板!
Red Hat Certificate System 由以下列出的软件包组成:
- redhat-pki
- redhat-pki-base
- #redhat-pki-java
- #redhat-pki-javadoc
- python3-redhat-pki
- redhat-pki-tools
- redhat-pki-server
- redhat-pki-theme
- redhat-pki-ca
- redhat-pki-kra
- redhat-pki-ocsp
- redhat-pki-tks
- redhat-pki-tps
- redhat-pki-acme
- redhat-pki-est
- redhat-pki-console
- redhat-pki-console-theme
要安装这些软件包,您必须附加一个 Red Hat Certificate System 订阅池并启用 RHCS 存储库。如需更多信息,请参阅 第 6.3.2.3 节 “附加红帽订阅并启用证书系统软件包存储库”。
使用 Red Hat Enterprise Linux 8 系统(可选,使用 中列出的受支持硬件安全模块配置了一个硬件安全模块),并在安装 Red Hat Certificate System 前确保所有软件包都为最新版本。
要安装所有证书系统软件包( pki-javadoc除外),请使用 dnf 安装 redhat-pki metapackage:
dnf install redhat-pki
# 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 的详情,请参阅使用 pkispawn 工具安装 RHCS。
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 进行交互式删除过程可能类似如下:
非互动删除过程可能类似以下示例:
当使用硬件令牌或硬件安全模块(HSM)时,密钥对不会被删除,因为您可以克隆实例。只有在使用软令牌时,才会删除密钥对。
这很重要,因为您可以在不实现令牌的情况下轻松重新创建实例并填充 HSM 内存。
在这种情况下,您的 certutil 命令输出可能类似以下示例,使用环境变量 $nssdb 指向本地 NSS 数据库,以访问 HSM,这与 PKI 的 NSS DB 不同:
销毁实例,例如:
pkidestroy -v -i 2023-10-03-0139-10.4-rootca1 -s CA 2>&1 | tee ~/pkidestroy.2023-10-03-0139-10.4-rootca1.out.1.txt
# pkidestroy -v -i 2023-10-03-0139-10.4-rootca1 -s CA 2>&1 | tee ~/pkidestroy.2023-10-03-0139-10.4-rootca1.out.1.txt
验证实例已被删除,例如:
pki-server instance-find
pki-server instance-find
验证硬件令牌中是否存在来自已删除 PKI 实例 till 的私钥:
如果您确实需要删除这些私钥,可以使用 certutil -F 命令或 manufacturer 工具,例如 Luna Client cmu list 和 cmu delete 带有一些选项。
以下是一个 certutil 示例,它已初始化了 NSS db 目录:
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:auditSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:Server-Cert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:subsystemCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:ocspSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:caSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:auditSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:Server-Cert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:subsystemCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:ocspSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
certutil -F -d ${nssdb} -f ${nssdb}/hsm.password.txt -h thalesLunaDEV -n "thalesLunaDEV:caSigningCert cert-2023-10-03-0139-10.4-rootca1 CA"
可选。删除与删除的 CA 签名证书关联的系统信任证书或签发者或信任链(例如:
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 start <unit-file>@instance_name.service
systemctl status <unit-file>@instance_name.service
# systemctl status <unit-file>@instance_name.service
systemctl stop <unit-file>@instance_name.service
# systemctl stop <unit-file>@instance_name.service
systemctl restart <unit-file>@instance_name.service
# systemctl restart <unit-file>@instance_name.service
<unit-file> 具有以下值之一:
pki-tomcatd With watchdog disabled pki-tomcatd-nuxwdog With watchdog enabled
pki-tomcatd With watchdog disabled
pki-tomcatd-nuxwdog With watchdog enabled
有关 watchdog 服务的详情,请参考 Red Hat Certificate System Administration Guide 中的 第 2.3.9 节 “密码和 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 disable pki-tomcatd@instance_name.service
重新启用实例:
systemctl enable pki-tomcatd@instance_name.service
# systemctl enable pki-tomcatd@instance_name.service
systemctl enable 和 systemctl disable 命令不会立即启动或停止证书系统。
2.2.4. 进程管理(pki-server) 复制链接链接已复制到粘贴板!
2.2.4.1. pki-server 命令行工具 复制链接链接已复制到粘贴板!
Red Hat Certificate System 的主要进程管理工具是 pki-server。使用 pki-server --help 命令,并查看 pki-server 手册页。
pki-server 命令行界面(CLI)管理本地服务器实例(如服务器配置或系统证书)。按如下方式调用 CLI:
pki-server [CLI options] <command> [command parameters]
$ pki-server [CLI options] <command> [command parameters]
CLI 使用服务器实例的配置文件和 NSS 数据库,因此 CLI 不需要任何之前的初始化。由于 CLI 直接访问文件,它只能由 root 用户执行,而且不需要客户端证书。此外,无论服务器的状态如何,CLI 都可以运行;它不需要正在运行的服务器。
CLI 支持以分级结构组织的多个命令。要列出顶级命令,请在没有任何附加命令或参数的情况下执行 CLI:
pki-server
$ pki-server
某些命令包含子命令。若要列出它们,可使用命令名称执行 CLI,并且无附加选项。例如:
pki-server ca pki-server ca-audit
$ pki-server ca
$ pki-server ca-audit
要查看命令用法信息,请使用 the -help 选项:
pki-server --help pki-server ca-audit-event-find --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-disable -i instance_id subsystem_id
pki-server subsystem-enable -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-disable -i pki-tomcat ocsp
列出实例的已安装的子系统:
pki-server subsystem-find -i instance_id
# pki-server subsystem-find -i instance_id
显示特定子系统的状态:
pki-server subsystem-find -i instance_id subsystem_id
# pki-server subsystem-find -i instance_id subsystem_id
2.2.4.3. 查找子系统 Web 服务 URL 复制链接链接已复制到粘贴板!
CA, KRA, OCSP, OCSP, TKS, 和 TPS 子系统有用于代理的 Web 服务页面,以及常规用户和管理员(如果适用)。可以通过打开子系统的安全最终用户端口到子系统主机的 URL 来访问这些 Web 服务。例如,对于 CA:
https://server.example.com:8443/ca/services
https://server.example.com:8443/ca/services
要获取实例的所有接口、URL 和端口的完整列表,请检查该服务的状态。例如:
pki-server status <instance_name>
pki-server status <instance_name>
每个子系统的主要 Web 服务页面包含可用服务页面列表;下表中概述了这些页面。要特别访问任何服务,请访问适当的端口,并将相应的目录附加到 URL。例如,要访问 CA 的最终实体(普通用户)Web 服务:
https://server.example.com:8443/ca/ee/ca
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
https://192.0.2.1:8443/ca/services
https://[2001:DB8::1111]:8443/ca/services
任何人都可以访问子系统的最终用户页面。但是,访问代理或管理 Web 服务页面要求在 Web 浏览器中发布代理或管理员证书并安装代理或管理员证书。否则,对 Web 服务的身份验证会失败。
| port | 用于 SSL/TLS | 用于带有客户端身份验证值的 Client AuthenticationServices 可以被重新配置为需要客户端身份验证。没有 Yes 或 No 值的服务无法配置为使用客户端身份验证。 | 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 | 否 | |
| 结束实体 | kra/ee/kra | 8443 | 是 | 否 |
| 结束实体 | kra/ee/kra | 8443 | 是 | 是 |
| 代理 | kra/agent/kra | 8443 | 是 | 否 |
| 服务 | kra/services | 8443 | 是 | 否 |
| 控制台(Console) | pkiconsole https://host:port/kra |
| 8080 | 否 |
| 结束实体 | ocsp/ee/ocsp | 8443 | 是 | |
| 否 | 结束实体 | ocsp/ee/ocsp | 8443 | 是 |
| 是 | 代理 | ocsp/agent/ocsp | 8443 | 是 |
| 否 | 服务 | ocsp/services | 8443 | 是 |
| 否 | 控制台(Console) | pkiconsole https://host:port/ocsp |
| 8080 |
| 否 | 结束实体 | tks/ee/tks | 8443 | |
| 是 | 否 | 结束实体 | 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 服务 | tps/ui |
2.2.4.4. 启动证书系统控制台 复制链接链接已复制到粘贴板!
此控制台已弃用。
CA、KRA、OCSP 和 TKS 子系统有一个 Java 接口,它可以被访问来执行管理功能。对于 KRA、OCSP 和 TKS,这包括配置日志记录和管理用户和组等非常基本的任务。对于 CA,这包括创建证书配置集和配置发布等其他配置设置。
控制台通过 pkiconsole 工具通过 SSL/TLS 端口连接到子系统实例来打开。这个工具使用以下格式:
pkiconsole https://server.example.com:admin_port/subsystem_type
pkiconsole https://server.example.com:admin_port/subsystem_type
subsystem_type 可以是 ca、kra、ocsp 或 tks。例如,这将打开 KRA 控制台:
pkiconsole https://server.example.com:8443/kra
pkiconsole https://server.example.com:8443/kra
如果没有配置 DNS,则可以使用 IPv4 或 IPv6 地址来连接到控制台。例如:
https://192.0.2.1:8443/ca https://[2001:DB8::1111]:8443/ca
https://192.0.2.1:8443/ca
https://[2001:DB8::1111]:8443/ca