16.3. 设置 agent-approved 密钥恢复方案


密钥恢复代理会统一授权并检索私有加密密钥和相关证书。要授权密钥恢复,所需的恢复代理访问 KRA 代理服务页面,并使用 Authorize Recovery 区域单独输入每个授权。

其中一个代理启动密钥恢复过程。对于同步恢复,每个批准代理都使用参考号(通过初始请求返回)来打开请求,然后单独授权密钥恢复。对于异步恢复,批准代理都会搜索密钥恢复请求,然后授权密钥恢复。无论哪种方式,每当输入所有授权时,KRA 会检查信息。如果显示的信息正确,它会检索请求的密钥,并以 PKCSGRESS 软件包的形式返回对应的证书,到启动密钥恢复过程的代理。

密钥恢复代理方案 将 KRA 配置为识别密钥恢复代理所属的组,并指定在恢复归档密钥前需要授权这些代理的数量。

16.3.1. 在命令行中配置 agent-approved 密钥恢复

要设置代理发起的密钥恢复,请编辑 KRA 配置中的两个参数:

  • 设置恢复管理器的数量,需要批准恢复。
  • 设置这些用户必须属于的组。

这些参数在 KRA 的 CS.cfg 配置文件中设置。

  1. 在编辑配置文件前停止服务器。

    # systemctl stop pki-tomcatd@instance_name.service

    OR (如果使用 nuxwdog watchdog

    # systemctl stop pki-tomcatd-nuxwdog@instance_name.service
  2. 打开 KRA 的 CS.cfg 文件。

    # vim /var/lib/pki/pki-tomcat/kra/conf/CS.cfg
  3. 编辑两个恢复方案参数。

    kra.noOfRequiredRecoveryAgents=3
    kra.recoveryAgentGroup=Key Recovery Authority Agents
  4. 重新启动服务器。

    systemctl start pki-tomcatd@instance_name.service

    或者

    # systemctl start pki-tomcatd-nuxwdog@instance_name.service
注意

有关如何在控制台中配置 agent-approved 密钥恢复的更多信息,请参阅 Red Hat Certificate System Administration Guide 中的 Configuring Agent-Approved Key Recovery 部分。

16.3.2. 自定义密钥恢复表单

默认密钥代理方案需要来自密钥恢复授权代理组的单个代理,以负责授权密钥恢复。

也可以自定义密钥恢复表单的外观。关键恢复代理需要适当的页面来启动密钥恢复过程。默认情况下,KRA 的代理服务页面包括适当的 HTML 表单,允许密钥恢复代理启动密钥恢复、授权密钥恢复请求并检索加密密钥。此表单位于 /var/lib/pki/pki-tomcat/kra/webapps/kra/agent/kra/ 目录中,名为 confirmRecover.html

重要

如果自定义密钥恢复确认表单,请不要删除用于生成响应的任何信息。这对表单的功能至关重要。限制表单中内容的任何更改和外观。

16.3.3. 在新私有存储密钥中重新打包密钥

在 KRA 中存档时,一些私钥(保留在旧部署中)被嵌套在 SHA-1 中,1024 位存储密钥被嵌套。随着处理器加速改进和算法被损坏,这些算法变得不太安全。作为一种安全措施,可以将私钥重新打包到新的、更强大的存储密钥(SHA-256、2048 位密钥)。

16.3.3.1. 关于 KRATool

重新封装和移动密钥及密钥注册和恢复请求是使用 KRATool 实用程序(在以前版本的 Red Hat Certificate System 中作为 DRMTool)完成的。

KRATool 执行两个操作:它可以使用新私钥重新换换密钥,并且它可以重新编号 LDIF 文件条目中用于密钥记录的属性,包括注册和恢复请求。必须至少执行一个操作(rewrap 或 renumber),且它们可以在单个调用中执行。

对于重新封装密钥,该工具访问原始 KRA 导出的 LDIF 文件中的密钥条目,使用原始的 KRA 存储密钥,然后在新的 KRA 更强大的存储密钥中重新封装密钥。

例 16.1. 重新包装密钥

KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
      -source_ldif_file "/tmp/files/originalKRA.ldif" \
      -target_ldif_file "/tmp/files/newKRA.ldif" \
      -log_file "/tmp/kratool.log" \
      -source_pki_security_database_path "/tmp/files/" \
      -source_storage_token_name "Internal Key Storage Token" \
      -source_storage_certificate_nickname "storageCert cert-pki-tomcat KRA" \
      -target_storage_certificate_file "/tmp/files/omega.cert"

当多个 KRA 实例合并到一个实例中时,务必要确保没有密钥或请求记录冲突 CN、DN、序列号或请求 ID 号。可以处理这些值,将更大的值附加到现有值中。

例 16.2. 重新数字键

KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
      -source_ldif_file "/tmp/files/originalKRA.ldif" \
      -target_ldif_file "/tmp/files/newKRA.ldif" \
      -log_file "/tmp/kratool.log" \
      -append_id_offset 100000000000 \
      -source_kra_naming_context "pki-tomcat-KRA" \
      -target_kra_naming_context "pki-tomcat-2-KRA" \
      -process_requests_and_key_records_only

KRATool 选项及其配置文件在 KRATool (1) man page 中更为详细地讨论。

16.3.3.2. 将来自一个或多个 KRA 的 wrapping 和 Merging 键重新嵌套到单个 KRA 中

此流程重新将存储在一个或多个证书系统 KRA 中的密钥(例如,sourcekra.example.com上的 pki-tomcat )将其保存到另一个证书系统 KRA 中(例如,targetkra.example.com上的 pki-tomcat- 2)。这不是唯一的用例;工具可以和源和目标在同一实例上运行,以重新包装现有密钥,或者只是将密钥从多个 KRA 实例复制到单个实例中,而无需全部重新包装密钥。

重要

pki-tomcat-2 KRA 中的存储密钥大小和类型必须设置为 2048 位和 RSA。

  1. 登录到 targetkra.example.com
  2. 停止 pki-tomcat-2 KRA。

    [root@targetkra ~]# systemctl stop pki-tomcatd@pki-tomcat-2.service
  3. 创建一个数据目录来存储要从位于 sourcekra.example.compki-tomcat KRA 实例中导入的密钥数据。

    [root@targetkra ~]# mkdir -p /export/pki
  4. pki-tomcat-2 KRA 的公共存储证书导出到新数据目录中的平面文件。

    [root@targetkra ~]# certutil -L -d /var/lib/pki/pki-tomcat-2/alias -n "storageCert cert-pki-tomcat-2 KRA" -a > /export/pki/targetKRA.cert
  5. 如果 Directory Server 实例位于同一机器上,请停止 pki-tomcat-2 KRA 的 Directory 服务器实例。

    [root@newkra ~]# systemctl stop dirsrv.target
  6. 导出 pki-tomcat-2 KRA 的配置信息。

    [root@targetkra ~]# grep nsslapd-localuser /etc/dirsrv/slapd-instanceName/dse.ldif
      nsslapd-localuser: dirsrv
    
    [root@targetkra ~]# chown dirsrv:dirsrv /export/pki
    
    [root@targetkra ~]# /usr/lib64/dirsrv/slapd-instanceName/db2ldif -n pki-tomcat-2-KRA -a /export/pki/pki-tomcat-2.ldif
    重要

    确保 LDIF 文件末尾包含一个空白行。

  7. 登录到 sourcekra.example.com
  8. 停止 pki-tomcat KRA。

    [root@sourcekra ~]# systemctl stop pki-tomcatd@pki-tomcat.service
  9. 创建一个数据目录,以存储要导出到位于 targetkra.example.com 上的 pki-tomcat-2 KRA 实例的密钥数据。

    [root@sourcekra ~]# mkdir -p /export/pki
  10. 如果 Directory Server 实例位于同一机器上,请停止 pki-tomcat KRA 的 Directory 服务器实例。

    [root@sourcekra ~]# systemctl stop dirsrv.target
  11. 导出 pki-tomcat KRA 的配置信息。

    [root@sourcekra ~]# grep nsslapd-localuser /etc/dirsrv/slapd-instanceName/dse.ldif
      nsslapd-localuser: dirsrv
    
    [root@sourcekra ~]# chown dirsrv:dirsrv /export/pki
    
    [root@sourcekra ~]# /usr/lib64/dirsrv/slapd-instanceName/db2ldif -n pki-tomcat-KRA -a /export/pki/pki-tomcat.ldif
    重要

    确保 LDIF 文件末尾包含一个空白行。

  12. pki-tomcat KRA NSS 安全数据库复制到这个目录中。

    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/cert9.db /export/pki
    
    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/key4.db /export/pki
    
    [root@sourcekra ~]# cp -p /var/lib/pki/pki-tomcat/alias/pkcs11.txt /export/pki
  13. 使用 pki-tomcat-2 KRA 机器中的公共存储密钥将文件复制到此机器中。例如:

    [root@sourcekra ~]# cd /export/pki
    
    [root@sourcekra ~]# sftp root@targetkra.example.com
    sftp> cd /export/pki
    sftp> get targetKRA.cert
    sftp> quit
  14. 如有必要,编辑默认 KRATool.cfg 文件以用于该工具。默认 文件也可以在不更改的情况下使用。
  15. 运行 KRATool; 所有这些参数都应该位于一行中:

    [root@sourcekra ~]# KRATool -kratool_config_file "/usr/share/pki/java-tools/KRATool.cfg" \
              -source_ldif_file /export/pki/pki-tomcat.ldif \
              -target_ldif_file /export/pki/source2targetKRA.ldif \
              -log_file /export/pki/kratool.log \
              -source_pki_security_database_path /export/pki \
              -source_storage_token_name 'Internal Key Storage Token' \
              -source_storage_certificate_nickname 'storageCert cert-pki-tomcat KRA' \
              -target_storage_certificate_file /export/pki/targetKRA.cert \
              -append_id_offset 100000000000 \
              -source_kra_naming_context "pki-tomcat-KRA" \
              -target_kra_naming_context "pki-tomcat-2-KRA" \
              -process_requests_and_key_records_only
    注意

    命令可能会提示输入 pki-tomcat KRA NSS 安全数据库中存储的令牌的密码。

    完成后,命令会创建在 -target_ldif_file 参数、source2targetKRA.ldif 中指定的文件。

  16. 将此 LDIF 文件复制到 pki-tomcat-2 KRA 机器。例如:

    [root@sourcekra ~]# scp /export/pki/source2targetKRA.ldif root@targetkra.example.com:/export/pki
    重要

    确保 LDIF 文件末尾包含一个空白行。

  17. 如果多个 KRA 实例被合并,则其数据可以合并到单个导入操作中。只需为每个 KRA 执行相同的步骤,这些步骤将被合并。

    重要

    确保为 -target_ldif_file 参数指定唯一值,以创建单独的 LDIF 文件,并指定 unique -append_id_offset 值,以便在 LDIF 文件被串联时不会有冲突。

  18. pki-tomcat-2 KRA 机器上,通过连接 pki-tomcat-2 KRA 配置 LDIF 文件和其他 KRA 实例的每个导出 LDIF 文件来导入 LDIF 文件和其他密钥数据。例如:

    [root@targetkra ~]# cd /export/pki
    [root@targetkra ~]# cat pki-tomcat-2.ldif source2targetKRA.ldif > combined.ldif
  19. 将此组合 LDIF 文件导入到 pki-tomcat-2 KRA 实例的目录服务器数据库中。

    [root@targetkra ~]# /usr/lib64/dirsrv/slapd-instanceName/ldif2db -n pki-tomcat-2-KRA -i /export/pki/combined.ldif
  20. pki-tomcat-2 KRA 启动 Directory 服务器实例。

    [root@targetkra ~]# systemctl start dirsrv.target
  21. 启动 pki-tomcat-2 KRA。

    [root@targetkra ~]# systemctl start pki-tomcatd@pki-tomcat-2.service

16.3.4. 克隆后更新 CA-KRA 连接器信息

有关在克隆后更新 CA-KRA 信息的更多信息,请参阅 第 16.3.4 节 “克隆后更新 CA-KRA 连接器信息”

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.