2.3. 证书系统架构概述
虽然每个服务都提供了不同的服务,但所有红帽认证系统子系统(CA、KRA、OCSP、TKS、TPS)共享一个通用架构。以下架构图显示了所有这些子系统共享的通用架构。
2.3.1. Java 应用程序服务器 复制链接链接已复制到粘贴板!
Java 应用服务器是用于运行服务器应用程序的 Java 框架。证书系统设计为在 Java 应用服务器中运行。目前唯一支持的 Java 应用服务器是 Tomcat 8。以后可能会添加对其他应用服务器的支持。如需更多信息,请访问 http://tomcat.apache.org/。
每个证书系统实例都是 Tomcat 服务器实例。Tomcat 配置存储在 server.xml 中。以下链接提供有关 Tomcat 配置的更多信息: https://tomcat.apache.org/tomcat-8.0-doc/config/。
每个证书系统子系统(如 CA 或 KRA)都部署为 Tomcat 中的 Web 应用程序。Web 应用程序配置存储在 web.xml 文件中,该文件在 Java Servlet 3.1 规格中定义。详情请查看 https://www.jcp.org/en/jsr/detail?id=340。
证书系统配置本身存储在 CS.cfg 中。
有关这些文件的实际位置,请参阅 第 2.3.16 节 “实例布局”。
2.3.2. Java 安全管理器 复制链接链接已复制到粘贴板!
Java 服务可以选择使用安全管理器,为要执行的应用程序定义不安全和安全操作。安装子系统后,它们会自动启用 Security Manager,这意味着每个 Tomcat 实例都从运行的安全管理器开始。
如果实例是通过运行 pkispawn 创建,并使用一个覆盖配置文件,该文件指定了其自身 Tomcat 部分下的 pki_security_manager=false 选项,则 Security Manager 会被禁用。
可以使用以下流程从已安装的实例中禁用 Security Manager:
首先停止实例:
pki-server stop instance_name
# pki-server stop instance_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果使用 Nuxwdog watchdog:
systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl stop pki-tomcatd-nuxwdog@instance_name.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
/etc/sysconfig/instance_name文件,并设置SECURITY_MANAGER="false" 保存后,重启实例:
pki-server start instance_name
# pki-server start instance_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果使用 Nuxwdog watchdog:
systemctl start pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当您启动或重启实例时,由 pkidaemon 从以下文件构建或重新创建 Java 安全策略:
/usr/share/pki/server/conf/catalina.policy /usr/share/tomcat/conf/catalina.policy /var/lib/pki/$PKI_INSTANCE_NAME/conf/pki.policy /var/lib/pki/$PKI_INSTANCE_NAME/conf/custom.policy
/usr/share/pki/server/conf/catalina.policy
/usr/share/tomcat/conf/catalina.policy
/var/lib/pki/$PKI_INSTANCE_NAME/conf/pki.policy
/var/lib/pki/$PKI_INSTANCE_NAME/conf/custom.policy
然后,它将保存在 /var/lib/pki/instance_name/conf/catalina.policy 中。
2.3.3. 接口 复制链接链接已复制到粘贴板!
这部分论述了 Red Hat Certificate System 的各种接口。
2.3.3.1. Servlet 接口 复制链接链接已复制到粘贴板!
每个子系统都包含允许与子系统各种部分交互的接口。所有子系统共享一个通用的管理界面,并有一个代理允许代理执行分配给它们的任务。CA 子系统具有一个最终用户接口,它允许端到端在 PKI 中注册。OCSP Responder 子系统有一个端到端接口,允许终止和应用程序检查当前证书撤销状态。最后,TPS 有一个 operator 接口。
虽然应用服务器提供连接入口点,但证书系统通过提供特定于每个接口的 servlets 来完成接口。
每个子系统的 servlet 在对应的 web.xml 文件中定义。相同的文件还定义每个 servlet 的 URL 和访问 servlet 的安全要求。请参阅 第 2.3.1 节 “Java 应用程序服务器” 了解更多信息。
2.3.3.2. 管理界面 复制链接链接已复制到粘贴板!
代理接口提供 Java servlet 来处理来自代理入口点的 HTML 表单提交。根据每个表单提交中提供的信息,代理 servlets 允许代理执行代理任务,如编辑和批准证书批准请求、证书续订和证书撤销、批准证书配置文件。KRA 子系统或 TKS 子系统的代理接口或 OCSP 响应程序特定于子系统。
在非TMS 设置中,代理接口也用于 CA 到KRA 可信连接的 CIMC 边界通信。此连接由 SSL 客户端身份验证保护,并由称为受信任的 管理器 的可信角色区分。与 agent 角色一样,必须为 inter-CIMC 边界连接创建的受信任的管理器(伪用户)需要经过 SSL 客户端验证。但是,与代理角色不同,它们不提供任何代理功能。
在 TMS 设置中,CIMC 边界通信来自 TPS-to-CA、TPS-to-KRA 和 TPS-to-TKS。
2.3.3.3. 最终用户接口 复制链接链接已复制到粘贴板!
对于 CA 子系统,最终用户接口提供 Java servlets 来处理来自最终用户入口点的 HTML 表单提交。根据从表单提交的信息,最终用户 servlet 允许最终提供注册、续订证书、撤销自己的证书,以及获取签发的证书。OCSP Responder 子系统的 End-Entity 接口提供 Java servlet 以接受和处理 OCSP 请求。KRA、TKS 和 TPS 子系统不提供任何端到端服务。
2.3.3.4. Operator 接口 复制链接链接已复制到粘贴板!
operator 接口仅在 TPS 子系统中找到。
2.3.4. REST 接口 复制链接链接已复制到粘贴板!
代表状态转移 (REST)是一种使用 HTTP 定义和组织 Web 服务的方法,可简化与其他应用程序的互操作性。Red Hat Certificate System 提供了一个 REST 接口来访问服务器上的各种服务。
Red Hat Certificate System 中的 REST 服务使用 RESTEasy 框架来实施。RESTEasy 实际上在 Web 应用中作为 servlet 运行,因此 RESTEasy 配置也可以在对应子系统的 web.xml 中找到。有关 RESTEasy 的更多信息,请访问 http://resteasy.jboss.org/。
每个 REST 服务都定义为单独的 URL。例如:
-
CA certificate service:
http:// <host_name>:_<port>_/ca/rest/certs/ -
KRA 密钥服务:
http:// <host_name>:_<port>_/kra/rest/agent/keys/ -
TKS 用户服务:
http:// <host_name>:_<port>_/tks/rest/admin/users/ -
TPS 组服务:
http:// <host_name>:_<port>_/tps/rest/admin/groups/
某些服务可以使用普通 HTTP 连接访问,但有些其他服务可能需要 HTTPS 连接才能提高安全性。
REST 操作被指定为 HTTP 方法(例如 GET、PUT、POST、DELETE)。例如,若要获取客户端将发送 GET /ca/rest/users 请求的 CA 用户。
REST 请求和响应消息可以使用 XML 或 JSON 格式发送。例如:
可以使用 CLI、Web UI 或通用 REST 客户端等工具访问 REST 界面。证书系统还提供 Java、Python 和 JavaScript 库,以编程方式访问服务。
REST 接口支持两种类型的身份验证方法:
- 用户名和密码
- 客户端证书
每个服务所需的身份验证方法在 /usr/share/pki/ca/conf/auth-method.properties 中定义。
REST 接口可能需要某些权限才能访问该服务。权限在 LDAP 中的 ACL 资源中定义。REST 接口映射到 /usr/share/pki/<subsystem>/conf/acl.properties 中的 ACL 资源。
有关 REST 接口的详情,请参考 http://www.dogtagpki.org/wiki/REST。
2.3.5. JSS 复制链接链接已复制到粘贴板!
Java 安全服务 (JSS)为 NSS 执行的加密操作提供了一个 Java 接口。JSS 和更高的证书系统架构级别使用 Java 原生接口(JNI)构建,它提供了从 Java 虚拟机(JVM)访问原生系统库。这种设计允许我们使用 FIPS 批准的加密供应商,如作为系统一部分的 NSS。JSS 支持 NSS 支持的大多数安全标准和加密技术。JSS 还为 ASN.1 类型和 BER-DER 编码提供一个纯 Java 接口。
2.3.6. tomcatjss 复制链接链接已复制到粘贴板!
Red Hat Certificate System 中的基于 Java 的子系统使用一个名为 tomcatjs 的单个 JAR 文件作为 Tomcat 服务器 HTTP 引擎和 JSS 之间的桥接,用于 NSS 执行的安全操作的 Java 接口。tomcatjss 是使用 Tomcat 的 Java 安全服务(JSS)的 Java 安全套接字扩展(JSSE)实施。
tomcatjss 实施使用 TLS 和创建 TLS 套接字所需的接口。套接字工厂(tomcatjss 实施)利用下面列出的各种属性来创建 TLS 服务器侦听套接字并将其返回到 tomcat。tomcatjss 本身利用我们的 java JSS 系统最终与计算机上的原生 NSS 加密服务通信。
加载 Tomcat 服务器和证书系统类时,会加载 tomcatjss。载入过程如下所述:
- 服务器已启动。
- Tomcat 到达需要为证书系统安装创建侦听套接字的位置。
-
server.xml文件已被处理。此文件中的配置告诉系统使用 Tomcatjs 实施的套接字工厂。 - 对于每个请求的套接字,Tomcajss 在创建套接字时读取并处理包含的属性。生成的套接字的行为与这些参数要求一样。
- 服务器运行后,我们有所需的监听套接字,等待到基于 Tomcat 的证书系统的连接。
请注意,当在启动时创建套接字时,Tomcatjs 是证书系统 中的第一个 实体,其实际上处理底层 JSS 安全服务。处理第一个侦听套接字后,会创建一个 JSS 实例以供使用。
有关 server.xml 文件的详情,请参考 第 9.4 节 “tomcat 引擎和 Web 服务的配置文件”。
2.3.7. PKCS #11 复制链接链接已复制到粘贴板!
Public-Key Cryptography Standard (PKCS) PKCS 指定用来与保存加密信息的设备进行通信的 API,并执行加密操作。由于它支持 PKCSSpread,因此证书系统与广泛的硬件和软件设备兼容。
任何证书系统子系统实例必须至少有一个 PKCSxdg 模块。PKCS the 模块(也称为加密模块或加密服务提供商)管理加密服务,如加密和解密。PKCS the 模块与可在硬件或软件中实施的加密设备的驱动程序类似。证书系统包含一个内置 PKCS modprobe 模块,并支持第三方模块。
PKCS the 模块始终在物理读取器(如智能卡或软件中称为概念插槽)中作为物理硬件插槽实现的一个或多个插槽。PKCS the module 的每个插槽都可以包含一个令牌,它是一个硬件或软件设备,它实际上是实际提供加密服务以及可选存储证书和密钥的硬件和软件设备。
证书系统定义了两种类型的令牌,即 internal 和 external。内部令牌用于存储证书信任锚。外部令牌用于存储属于证书系统子系统的密钥对和证书。
2.3.7.1. NSS 软令牌(内部令牌) 复制链接链接已复制到粘贴板!
证书系统使用 NSS 软令牌来存储证书信任锚。
NSS Soft Token 也称为内部令牌或软件令牌。软件令牌由两个文件组成,这些文件通常称为证书数据库(cert9.db)和密钥数据库(key4.db)。文件是在证书系统子系统配置期间创建的。这些安全数据库位于 /var/lib/pki/instance_name/alias 目录中。
NSS 软令牌提供的两个加密模块包含在证书系统中:
默认内部 PKCS598 模块,它附带两个令牌:
- 内部加密服务令牌,用于执行所有加密操作,如加密、解密和哈希。
- 内部密钥存储令牌("Certificate DB token"),处理与存储证书和密钥的证书和密钥数据库文件的所有通信。
- FIPS 140 模块。此模块符合 FIPS 140 政府标准进行加密模块实现。FIPS 140 模块包含一个内置的 FIPS 140 证书数据库令牌,它处理加密操作以及与证书和密钥数据库文件的通信。
有关如何将证书导入到 NSS 软令牌的具体说明位于 第 10 章 管理证书/密钥加密令牌 中。
有关网络安全服务(NSS)的更多信息,请参阅相同名称的 Mozilla Developer web 页面。
2.3.7.2. 硬件安全模块(HSM,外部令牌) 复制链接链接已复制到粘贴板!
证书系统使用 HSM 来存储属于证书系统子系统的密钥对和证书。
任何 PKCS modprobe 模块都可以与证书系统一起使用。要将外部硬件令牌与子系统搭配使用,请在配置子系统前加载其 PKCS the 模块,新的令牌可供子系统使用。
可用的 PKCS modprobe 模块在子系统的 pkcs11.txt 数据库中跟踪。modutil 工具用于在系统更改时修改此文件,例如安装用于签名操作的硬件加速器。有关 modutil 的更多信息,请参阅 Mozilla Developer 网页上的网络安全服务(NSS)。
PKCS the 硬件设备还为硬件令牌中存储的信息提供关键备份和恢复功能。有关从令牌检索密钥的详情,请参考 PKCS the vendor 文档。
有关如何导入证书和管理 HSM 的具体说明位于 第 10 章 管理证书/密钥加密令牌 中。
支持的硬件安全模块位于 第 4.4 节 “支持的硬件安全模块” 中。
2.3.8. 证书系统序列号管理 复制链接链接已复制到粘贴板!
2.3.8.1. 序列号范围 复制链接链接已复制到粘贴板!
证书请求和序列号由 Java 的大型整数表示
默认情况下,由于其效率、证书请求号、证书序列号和副本 ID 按顺序分配给 CA 子系统。
对于请求、证书和副本 ID,序列号范围是可指定的:
- 当前序列号管理基于分配顺序序列号的范围。
- 当超过定义的阈值时,实例会请求新范围。
- 实例在分配给实例后存储有关新获取范围的信息。
- 实例继续使用旧范围,直到所有数字都耗尽,然后移至新范围。
- 克隆子系统通过复制冲突同步其范围分配。
对于新克隆:
- 在克隆过程中,当前 master 范围的一部分会被传送到一个新的克隆。
- 如果传输的范围低于定义的阈值,新的克隆可能会请求一个新的范围。
所有范围可在 CA 实例安装时配置,方法是向 PKI 实例覆盖配置文件添加 [CA] 部分,并根据需要在该部分中添加以下 name=value 对。/etc/pki/default.cfg 中已存在默认值,如下例所示:
2.3.8.2. 随机序列号管理 复制链接链接已复制到粘贴板!
除了顺序序列号管理外,红帽认证系统还提供可选的随机序列号管理。通过在 PKI 实例覆盖文件中添加 [CA] 部分并在该部分中添加以下 name=value 对,可在 CA 实例安装时选择随机序列号:
[CA] pki_random_serial_numbers_enable=True
[CA]
pki_random_serial_numbers_enable=True
如果选中,则会在指定范围内随机选择证书请求号和证书序列号。
2.3.9. 安全域 复制链接链接已复制到粘贴板!
安全域 是 PKI 服务的注册表。CA 等服务在这些域中注册有关自身的信息,以便 PKI 服务用户可以通过检查 registry 来查找其他服务。RHCS 中的安全域服务管理为证书系统子系统和一组共享信任策略注册 PKI 服务。
详情请查看 第 5.3 节 “规划安全域”。
2.3.10. 密码和 watchdog (nuxwdog) 复制链接链接已复制到粘贴板!
在默认设置中,RHCS 子系统实例需要充当客户端并进行身份验证,如 LDAP 内部数据库(除非设置了 LDAP 内部数据库,除非设置了无 TLS mutual 身份验证,其中将使用证书进行身份验证)、NSS 令牌数据库,或者有时设置了对 HSM 的身份验证。管理员会提示您在安装配置时设置此密码。然后,此密码被写入文件 < instance_dir>/conf/password.conf。同时,识别字符串存储在主配置文件 CS.cfg 中,作为参数 cms.passwordlist 的一部分。
配置文件 CS.cfg 由 Red Hat Enterprise Linux 保护,且只能被 PKI 管理员访问。没有密码存储在 CS.cfg 中。
在安装过程中,安装程序会选择并登录到内部软件令牌或硬件加密令牌。这些令牌的登录密码短语也写入 password.conf。
稍后配置也可以将密码置于 password.conf 中。LDAP 发布是一个示例,其中发布目录的新建目录管理器密码输入到 password.conf 中。
nuxwdog (watchdog)是一个轻量级辅助守护进程进程,用于启动、停止、监控状态并重新配置服务器程序。当用户需要提示输入密码以启动服务器时,最有用,因为它会在内核密钥环中安全地缓存这些密码,以便在服务器崩溃时自动重新启动。
nuxwdog 是唯一 允许的 watchdog 服务。
安装完成后,可以完全删除 password.conf 文件。重启时,nuxwdog watchdog 程序将提示管理员输入所需密码,使用参数 cms.passwordlist (如果使用了 HSM,则使用 cms.tokenList )作为要提示的密码列表。然后,密码由内核密钥环中的 nuxwdog 缓存,以允许从服务器崩溃进行自动恢复。在未控制的关闭(crash)时,会发生此自动恢复(自动子系统重启)。如果管理员进行控制关闭,则管理员将再次提示输入密码。
使用 watchdog 服务时,启动和停止 RHCS 实例会有所不同。详情请查看 第 9.3.2 节 “使用证书系统 watchdog 服务”。
有关详情请参考 第 9.3 节 “管理系统密码”。
2.3.11. 内部 LDAP 数据库 复制链接链接已复制到粘贴板!
Red Hat Certificate System 使用 Red Hat Directory Server (MQTTS)作为内部数据库来存储证书、请求、用户、角色、ACL 和其他各种内部信息等信息。证书系统通过密码与内部 LDAP 数据库通信,或者通过 SSL 身份验证安全。
如果在证书系统实例和目录服务器之间需要基于证书的身份验证,务必要按照说明设置这两个实体之间的信任。安装此类证书系统实例还需要正确的 pkispawn 选项。
详情请查看 第 7.1.2 节 “安装和配置 DS 实例”。
2.3.12. Security-enhanced Linux (SELinux) 复制链接链接已复制到粘贴板!
SELinux 是强制访问控制规则的集合,用于限制未经授权的访问和篡改。在 Red Hat Enterprise Linux 8 中使用 SELinux 指南 中更详细地描述了 SELinux。
基本上,SELinux 识别系统中的 对象,可以是文件、目录、用户、进程、套接字或 Linux 主机上的任何其他资源。这些对象对应于 Linux API 对象。然后,每个对象都会映射到 安全上下文,该上下文 定义对象类型以及如何在 Linux 服务器上正常工作。
对象可以分组到域中,然后为每个域分配正确的规则。每个安全上下文都有规则,它们对它可以执行的操作、可以访问哪些资源及其具有哪些权限进行设置。
证书系统的 SELinux 策略合并到标准系统 SELinux 策略中。这些 SELinux 策略适用于证书系统使用的每个子系统和服务。通过在 enforcing 模式下运行 SELinux 的证书系统,对由证书系统创建和维护的信息的安全性进行了增强。
图 2.1. CA SELinux 端口策略
证书系统 SELinux 策略为每个子系统实例定义 SELinux 配置:
- 每个子系统实例的文件和目录都使用特定的 SELinux 上下文标记。
- 每个子系统实例的端口使用特定的 SELinux 上下文标记。
- 所有证书系统进程都在特定于子系统的域中受到限制。
- 每个域具有特定的规则,它们定义了为域授权哪些操作。
- SELinux 策略中没有指定的访问将被拒绝访问证书系统实例。
对于证书系统,每个子系统都被视为 SELinux 对象,每个子系统都有为其分配的唯一规则。定义的 SELinux 策略允许证书系统对象在 SELinux 处于 enforcing 模式下运行。
每次运行 pkispawn 时,配置与该子系统关联的证书系统子系统、与该子系统关联的文件和端口都会标记为所需的 SELinux 上下文。当使用 pkidestroy 删除特定子系统时,这些上下文会被删除。
SELinux 策略中的中央定义是 pki_tomcat_t 域。证书系统实例是 Tomcat 服务器,pki_tomcat_t 域扩展了标准 tomcat_t Tomcat 域的策略。服务器上的所有证书系统实例共享相同的域。
当每个证书系统进程启动时,它最初在无限制域(unconfined_t)中运行,然后转换为 pki_tomcat_t 域。然后,这个过程具有某些访问权限,例如对标有 pki_tomcat_log_t 的日志文件进行写入,对标记为 pki_tomcat_etc_rw_t 的配置文件进行读写访问,或者打开并写入 http_port_t 端口的能力。
SELinux 模式可以从 enforcing 改为 permissive,也可以变为 off,但不建议这样做。
2.3.13. self-tests 复制链接链接已复制到粘贴板!
Red Hat Certificate System 提供了一个自测试框架,它允许在启动期间或需求或两者都检查 PKI 系统完整性。如果非关键的自我测试失败,消息将存储在日志文件中,而当出现关键自测试失败时,证书系统子系统将记录日志和正常关闭的原因。如果管理员希望在启动期间看到自我测试报告,则管理员应在启动子系统期间观察自测试日志。它们也可以在启动后查看日志。
由于自我测试失败而关闭子系统时,也会自动禁用它。这是为了确保子系统不部分运行并生成误导响应。解决问题后,可通过在服务器上运行以下命令来重新启用子系统:
pki-server subsystem-enable <subsystem>
# pki-server subsystem-enable <subsystem>
有关如何配置自助测试的详情,请参考 第 13.3.2 节 “配置自测试”。
2.3.14. 日志 复制链接链接已复制到粘贴板!
证书系统子系统创建日志文件,记录与活动相关的事件,如管理、使用服务器支持的任何协议的通信,以及子系统所使用的各种其他进程。在子系统实例运行时,它会在其管理的所有组件上保留信息和错误消息的日志。另外,Apache 和 Tomcat Web 服务器会生成错误和访问日志。
每个子系统实例维护自己的日志文件,用于安装、审计和其他日志记录功能。
日志插件模块是作为 #Java™ 类实现的监听程序,并在配置框架中注册。
除审计日志外,所有日志文件和轮转的日志文件都位于 pki_subsystem_log_path 中指定的任何目录中,当使用 pkispawn 创建实例时。 常规审计日志位于带有其他类型的日志的日志中,而签名的审计日志则写入 /var/log/pki/instance_name/subsystem_name/signedAudit。可以通过修改配置来更改日志的默认位置。
有关在安装过程中的日志配置以及其他信息的详情,请参考 第 13 章 配置日志。
有关安装后日志管理的详细信息,请参阅管理指南中的第 12 章(通用标准版) 配置子系统日志。
2.3.14.1. 审计日志 复制链接链接已复制到粘贴板!
审计日志包含已设置为可记录事件的可选择事件的记录。您还可以将审计日志配置为为完整性检查目的签名。
审计记录应根据 -第 13.4 节 “审计保留” 中指定的审计保留规则保存。
2.3.15. 签名的审计日志 复制链接链接已复制到粘贴板!
证书系统为所有事件(如请求、发布和撤销证书和发布 CRL)维护审计日志。这些日志随后会被签名。这允许检测到授权访问或活动。然后,外部审核员可以根据需要审核系统。分配的审核员用户帐户是唯一可以查看签名的审计日志的帐户。此用户的证书用于签署和加密日志。审计日志记录配置为指定日志记录的事件。
签名的审计日志被写入 /var/log/pki/instance_name/subsystem_name/signedAudit。但是,您可以通过修改配置来更改日志的默认位置。
如需更多信息,请参阅 规划、安装和部署指南(标准版)中的"显示和验证签名 的审计日志"。
2.3.15.1. 调试日志 复制链接链接已复制到粘贴板!
调试日志(默认启用)会针对所有子系统进行维护,具有不同程度和信息类型。
每个子系统的调试日志比系统、事务和访问日志更详细的信息。调试日志包含子系统执行的每个操作的非常具体的信息,包括运行、连接信息和服务器请求和响应消息的插件和 servlet。
记录到调试日志的服务包括授权请求、处理证书请求、证书状态检查以及归档和恢复密钥,以及访问 Web 服务。
调试日志记录了子系统进程的详细信息。每个日志条目都有一个以下格式:
date time [processor] LogLevel: servlet: message
date time [processor] LogLevel: servlet: message
消息 可以是子系统的返回消息,也可以是包含提交到子系统的值。
例如,TKS 记录了此消息用于连接 LDAP 服务器:
{YY-MM-DD} [main] INFO: TKS engine started
{YY-MM-DD} [main] INFO: TKS engine started
处理器 是主 的,消息 是来自服务器有关 TKS 引擎状态的消息,没有 servlet。INFO 为 LogLevel,其值可以是 INFO、WARNING、SEVERE,具体取决于日志级别。
另一方面,CA 会记录有关证书操作以及子系统连接的信息:
{YY-MM-DD}[http-8443;-Processor24]{LogLevel}: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443
{YY-MM-DD}[http-8443;-Processor24]{LogLevel}: ProfileSubmitServlet: key=$request.requestowner$ value=KRA-server.example.com-8443
在这种情况下,处理器 是 CA 的代理端口的 HTTP 协议,而它指定了 servlet 来处理配置集,并且包含一条提供配置集参数(请求的子系统所有者)及其值(KRA 发起了请求) 的消息。
例 2.1. CA 证书请求日志消息
同样, OCSP 显示 OCSP 请求信息:
{YY-MM-DD}[http-11180-Processor25]: OCSPServlet: OCSP Request:
{YY-MM-DD}[http-11180-Processor25]{LogLevel}: OCSPServlet:
MEUwQwIBADA+MDwwOjAJBgUrDgMCGgUABBSEWjCarLE6/BiSiENSsV9kHjqB3QQU
{YY-MM-DD}[http-11180-Processor25]: OCSPServlet: OCSP Request:
{YY-MM-DD}[http-11180-Processor25]{LogLevel}: OCSPServlet:
MEUwQwIBADA+MDwwOjAJBgUrDgMCGgUABBSEWjCarLE6/BiSiENSsV9kHjqB3QQU
2.3.15.2. 安装日志 复制链接链接已复制到粘贴板!
所有子系统都会保留安装日志。
每次通过初始安装创建子系统时,或使用 pkispawn 创建额外实例(带有安装的完整调试输出的安装文件),包括任何错误,如果安装成功,则实例的 URL 和 PIN。该文件在实例的 /var/log/pki/ 目录中创建,其名称格式为 pki-subsystem_name-spawn.timestamp.log。
安装日志中的每一行都遵循安装过程中的步骤。
例 2.2. CA 安装日志
2.3.15.3. Tomcat 错误和访问日志 复制链接链接已复制到粘贴板!
CA、KRA、TKS、TKS 和 TPS 子系统将 Tomcat Web 服务器实例用于其代理和终端实体的接口。
错误和访问日志由 Tomcat web 服务器创建,该服务器使用证书系统安装并提供 HTTP 服务。错误日志包含服务器遇到的 HTTP 错误消息。访问日志通过 HTTP 接口列出访问活动。
Tomcat 创建的日志:
- admin.timestamp
- catalina.timestamp
- catalina.out
- host-manager.timestamp
- localhost.timestamp
- localhost_access_log.timestamp
- manager.timestamp
这些日志在证书系统内不可用或可配置;它们只能在 Apache 或 Tomcat 中进行配置。有关配置这些日志的详情,请查看 Apache 文档。
2.3.15.4. 自测试日志 复制链接链接已复制到粘贴板!
当服务器启动或手动运行时,在自tests 运行期间获取的自tests 日志消息。可以通过打开此日志来查看测试。此日志无法通过控制台进行配置。此日志只能通过更改 CS.cfg 文件中的设置来配置。本节中有关日志的信息与此日志无关。有关自助测试的更多信息,请参阅 第 2.3.13 节 “self-tests”。
2.3.15.5. journalctl logs 复制链接链接已复制到粘贴板!
启动证书系统实例时,设置并启用 logging 子系统前会有一个较短的时间。在这段时间中,日志内容被写入标准输出,由 systemd 捕获并通过 journalctl 实用程序公开。
要查看这些日志,请运行以下命令:
journalctl -u pki-tomcatd@instance_name.service
# journalctl -u pki-tomcatd@instance_name.service
或者,如果使用 Nuxwdog watchdog:
journalctl -u pki-tomcatd-nuxwdog@instance_name.service
# journalctl -u pki-tomcatd-nuxwdog@instance_name.service
通常会在实例启动时监视这些日志(例如,在启动时进行自我测试失败)。要做到这一点,请在启动实例前在一个单独的控制台中运行这些命令:
journalctl -f -u pki-tomcatd@instance_name.service
# journalctl -f -u pki-tomcatd@instance_name.service
或者,如果使用 Nuxwdog watchdog:
journalctl -f -u pki-tomcatd-nuxwdog@instance_name.service
# journalctl -f -u pki-tomcatd-nuxwdog@instance_name.service
2.3.16. 实例布局 复制链接链接已复制到粘贴板!
每个证书系统实例都取决于多个文件。其中一些位于特定于实例的文件夹中,另一些位于与其他服务器实例共享的通用文件夹中。
例如,服务器配置文件存储在 /etc/pki/instance_name/server.xml 中,该配置文件特定于实例,但 CA servlet 在 /usr/share/pki/ca/webapps/ca/WEB-INF/web.xml 中被所有服务器实例共享。
2.3.16.1. 证书系统的文件和目录位置 复制链接链接已复制到粘贴板!
证书系统服务器是 Tomcat 实例,它由一个或多个证书系统子系统组成。证书系统子系统是提供特定类型的 PKI 功能的 Web 应用。通常,共享子系统信息包含在不可重新分配、RPM 定义的共享库、Java 归档文件、二进制文件和模板中。它们存储在固定位置。
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
目录包含子系统的自定义配置文件和模板、配置文件、证书数据库和其他文件。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat |
| 配置目录 | /etc/pki/pki-tomcat |
| 配置文件 | /etc/pki/pki-tomcat/server.xml /etc/pki/pki-tomcat/password.conf |
| 安全数据库 | /var/lib/pki/pki-tomcat/alias |
| 子系统证书 | SSL 服务器证书 子系统证书 [a] |
| 日志文件 | /var/log/pki/pki-tomcat |
| Web 服务文件 | /usr/share/pki/server/webapps/ROOT - Main page /usr/share/pki/server/webapps/pki/admin - Admin templates /usr/share/pki/server/webapps/pki/js - JavaScript libraries |
[a]
子系统证书始终由安全域发布,以便需要客户端身份验证的域级操作基于此子系统证书。
| |
/var/lib/pki/instance_name/conf/ 目录是一个指向 /etc/pki/instance_name/ 目录的符号链接。
2.3.16.2. CA 子系统信息 复制链接链接已复制到粘贴板!
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat/ca |
| 配置目录 | /etc/pki/pki-tomcat/ca |
| 配置文件 | /etc/pki/pki-tomcat/ca/CS.cfg |
| 子系统证书 | CA 签名证书 OCSP 签名证书(用于 CA 的内部 OCSP 服务) 审计日志签名证书 |
| 日志文件 | /var/log/pki/pki-tomcat/ca |
| 安装日志 | /var/log/pki/pki-ca-spawn.YYYYMMDDhhmmss.log |
| 配置集文件 | /var/lib/pki/pki-tomcat/ca/profiles/ca |
| 电子邮件通知模板 | /var/lib/pki/pki-tomcat/ca/emails |
| Web 服务文件 | /usr/share/pki/ca/webapps/ca/agent - 代理服务 /usr/share/pki/ca/webapps/ca/admin - Admin services /usr/share/pki/ca/webapps/ca/ee - 最终用户服务 |
2.3.16.3. KRA 子系统信息 复制链接链接已复制到粘贴板!
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat/kra |
| 配置目录 | /etc/pki/pki-tomcat/kra |
| 配置文件 | /etc/pki/pki-tomcat/kra/CS.cfg |
| 子系统证书 | 传输证书 存储证书 审计日志签名证书 |
| 日志文件 | /var/log/pki/pki-tomcat/kra |
| 安装日志 | /var/log/pki/pki-kra-spawn.YYYYMMDDhhmmss.log |
| Web 服务文件 | /usr/share/pki/kra/webapps/kra/agent - 代理服务 /usr/share/pki/kra/webapps/kra/admin - Admin services |
2.3.16.4. OCSP 子系统信息 复制链接链接已复制到粘贴板!
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat/ocsp |
| 配置目录 | /etc/pki/pki-tomcat/ocsp |
| 配置文件 | /etc/pki/pki-tomcat/ocsp/CS.cfg |
| 子系统证书 | OCSP 签名证书 审计日志签名证书 |
| 日志文件 | /var/log/pki/pki-tomcat/ocsp |
| 安装日志 | /var/log/pki/pki-ocsp-spawn.YYYYMMDDhhmmss.log |
| Web 服务文件 | /usr/share/pki/ocsp/webapps/ocsp/agent - 代理服务 /usr/share/pki/ocsp/webapps/ocsp/admin - Admin services |
2.3.16.5. TKS 子系统信息 复制链接链接已复制到粘贴板!
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat/tks |
| 配置目录 | /etc/pki/pki-tomcat/tks |
| 配置文件 | /etc/pki/pki-tomcat/tks/CS.cfg |
| 子系统证书 | 审计日志签名证书 |
| 日志文件 | /var/log/pki/pki-tomcat/tks |
| 安装日志 | /var/log/pki/pki-tomcat/pki-tks-spawn.YYYYMMDDhhmmss.log |
2.3.16.6. TPS 子系统信息 复制链接链接已复制到粘贴板!
目录特定于实例,与实例名称相关联。在这些示例中,实例名称为 pki-tomcat ; true 值是在使用 pkispawn 创建子系统时指定的任何值。
| 设置 | 值 |
|---|---|
| 主目录 | /var/lib/pki/pki-tomcat/tps |
| 配置目录 | /etc/pki/pki-tomcat/tps |
| 配置文件 | /etc/pki/pki-tomcat/tps/CS.cfg |
| 子系统证书 | 审计日志签名证书 |
| 日志文件 | /var/log/pki/pki-tomcat/tps |
| 安装日志 | /var/log/pki/pki-tps-spawn.YYYYMMDDhhhmmss.log |
| Web 服务文件 | /usr/share/pki/tps/webapps/tps - TPS services |
2.3.16.7. 共享证书系统子系统文件位置 复制链接链接已复制到粘贴板!
表 2.8 “子系统文件位置” 中列出了所有证书系统子系统实例用于常规服务器操作的目录或通用的目录。
| 目录位置 | 内容 |
|---|---|
| /usr/share/pki | 包含用于创建证书系统实例的常用文件和模板。除了所有子系统的共享文件外,子文件夹中还有特定于子系统的文件:
|
| /usr/bin |
包含 Certificate System 子系统共享的 |
| /usr/share/java/pki | 包含由本地 Tomcat Web 应用程序共享的 Java 存档文件,并由证书系统子系统共享。 |