16.3. 设置 agent-approved 密钥恢复方案
密钥恢复代理会统一授权并检索私有加密密钥和相关证书。要授权密钥恢复,所需的恢复代理访问 KRA 代理服务页面,并使用 Authorize Recovery 区域单独输入每个授权。
其中一个代理启动密钥恢复过程。对于同步恢复,每个批准代理都使用参考号(通过初始请求返回)来打开请求,然后单独授权密钥恢复。对于异步恢复,批准代理都会搜索密钥恢复请求,然后授权密钥恢复。无论哪种方式,每当输入所有授权时,KRA 会检查信息。如果显示的信息正确,它会检索请求的密钥,并以 PKCSGRESS 软件包的形式返回对应的证书,到启动密钥恢复过程的代理。
密钥恢复代理方案 将 KRA 配置为识别密钥恢复代理所属的组,并指定在恢复归档密钥前需要授权这些代理的数量。
16.3.1. 在命令行中配置 agent-approved 密钥恢复
要设置代理发起的密钥恢复,请编辑 KRA 配置中的两个参数:
- 设置恢复管理器的数量,需要批准恢复。
- 设置这些用户必须属于的组。
这些参数在 KRA 的 CS.cfg
配置文件中设置。
在编辑配置文件前停止服务器。
# systemctl stop pki-tomcatd@instance_name.service
OR (如果使用
nuxwdog watchdog
)# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
打开 KRA 的
CS.cfg
文件。# vim /var/lib/pki/pki-tomcat/kra/conf/CS.cfg
编辑两个恢复方案参数。
kra.noOfRequiredRecoveryAgents=3 kra.recoveryAgentGroup=Key Recovery Authority Agents
重新启动服务器。
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。
- 登录到 targetkra.example.com。
停止
pki-tomcat-2
KRA。[root@targetkra ~]# systemctl stop pki-tomcatd@pki-tomcat-2.service
创建一个数据目录来存储要从位于 sourcekra.example.com 的
pki-tomcat
KRA 实例中导入的密钥数据。[root@targetkra ~]# mkdir -p /export/pki
将
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
如果 Directory Server 实例位于同一机器上,请停止
pki-tomcat-2
KRA 的 Directory 服务器实例。[root@newkra ~]# systemctl stop dirsrv.target
导出
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 文件末尾包含一个空白行。
- 登录到 sourcekra.example.com。
停止
pki-tomcat
KRA。[root@sourcekra ~]# systemctl stop pki-tomcatd@pki-tomcat.service
创建一个数据目录,以存储要导出到位于 targetkra.example.com 上的
pki-tomcat-2
KRA 实例的密钥数据。[root@sourcekra ~]# mkdir -p /export/pki
如果 Directory Server 实例位于同一机器上,请停止
pki-tomcat
KRA 的 Directory 服务器实例。[root@sourcekra ~]# systemctl stop dirsrv.target
导出
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 文件末尾包含一个空白行。
将
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
使用
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
-
如有必要,编辑默认
KRATool.cfg
文件以用于该工具。默认 文件也可以在不更改的情况下使用。 运行
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
中指定的文件。将此 LDIF 文件复制到
pki-tomcat-2
KRA 机器。例如:[root@sourcekra ~]# scp /export/pki/source2targetKRA.ldif root@targetkra.example.com:/export/pki
重要确保 LDIF 文件末尾包含一个空白行。
如果多个 KRA 实例被合并,则其数据可以合并到单个导入操作中。只需为每个 KRA 执行相同的步骤,这些步骤将被合并。
重要确保为 -target_ldif_file 参数指定唯一值,以创建单独的 LDIF 文件,并指定 unique -append_id_offset 值,以便在 LDIF 文件被串联时不会有冲突。
在
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
将此组合 LDIF 文件导入到
pki-tomcat-2
KRA 实例的目录服务器数据库中。[root@targetkra ~]# /usr/lib64/dirsrv/slapd-instanceName/ldif2db -n pki-tomcat-2-KRA -i /export/pki/combined.ldif
为
pki-tomcat-2
KRA 启动 Directory 服务器实例。[root@targetkra ~]# systemctl start dirsrv.target
启动
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 连接器信息”。