21.2. 迁移 KRA
简单 KRA 迁移需要以下步骤:
位于 alpha.example.com 上的 KRA 包含数据,而位于 omega.example.com 上的 KRA 尚不存在。
Hostname | PKI KRA 版本 |
---|---|
alpha.example.com | RHCS 9.7 上的 PKI KRA 10.5 |
omega.example.com | RHCS 10.4 上的 PKI KRA 10.13 |
21.2.1. 在新主机上设置 KRA
在 omega.example.com 上,以
root
用户身份:
- 在 omega.example.com 上安装和配置一个新的 PKI 10.13 KRA。
- 停止 KRA 实例。
#
systemctl stop pki-tomcatd@<pki-kra>
- 创建目录以导出所有必需的文件。
#
mkdir -p /export/pki
- 将 KRA 存储证书导出到文件。稍后您将需要 KRA 存储证书来重新加密 alpha 上 KRA 的解密的旧数据。在以下示例中,该文件名为 omega.crt :
#
cd /var/lib/pki/<pki-kra>/alias/
#
pki-server cert-export kra_storage -i <pki-kra> --cert-file <omega.crt>
Certificate: Data: Version: 3 (0x2) Serial Number: 8 (0x8) Signature Algorithm: sha256WithRSAEncryption Issuer: O = example.com Security Domain, OU = topology-02-CA, CN = CA Signing Certificate Validity Not Before: Dec 19 10:58:02 2019 GMT Not After : Dec 8 10:58:02 2021 GMT Subject: O = example.com Security Domain, OU = topology-02-KRA, CN = DRM Storage Certificate Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (2048 bit) Modulus: 00:99:c1:f6:f4:0d:75:67:ff:58:3a:28:ee:34:f1: 40:0a:e1:5b:f3:9d:f4:c2:5a:1e:d0:d5:0c:62:c1: - 将
omega.crt
文件移到/export/pki
目录中。#
mv omega.crt /export/pki/
- 停止 Directory 服务器。
#
systemctl stop dirsrv@omega
注意如果缺少db2ldif
,请安装 389-ds-base-legacy-tools 软件包。 - 提取 KRA LDAP 数据库配置。您需要新的 KRA LDAP 数据库配置,才能将旧数据转换为新数据。
#
/usr/lib64/dirsrv/slapd-omega/db2ldif -n <pki-kra-KRA> -a /tmp/omega.ldif
- 将
/tmp/omega.ldif
文件移到/export/pki
目录。#
mv /tmp/omega.ldif /export/pki/
21.2.2. 从以前的系统导出内容
在 alpha.example.com 上,以
root
用户身份:
- 创建通用目录:
#
mkdir -p /export/pki
- 停止 Directory 服务器。在本例中,服务器名为 alpha:
#
systemctl stop dirsrv@alpha
- 从 KRA LDAP 数据库生成 LDIF:
#
/usr/lib64/dirsrv/slapd-alpha/db2ldif -n <pki-kra-KRA> -a /tmp/alpha.ldif
- 将
/tmp/alpha.ldif
文件移到/export/pki
目录中:#
mv /tmp/alpha.ldif /export/pki/
- 将 KRA NSS 安全数据库复制到数据区域:
#
cp -p /var/lib/pki/<pki-kra>/alias/* /export/pki/
- 进入 /export/pki 目录:
#
cd /export/pki
- 从 omega.example.com 获取包含新 KRA 存储证书的 flat-file:
sftp root@omega.example.com sftp> cd /export/pki sftp> get omega.crt sftp> quit
- 获取内部密码:
#
cat /var/lib/<instance_name>/conf/password.conf
- 在 alpha.example.com 上运行
KRATool
:# KRATool \ -kratool_config_file /usr/share/pki/java-tools/KRATool.cfg \ -source_ldif_file /export/pki/alpha.ldif \ -target_ldif_file /export/pki/alpha2omega.ldif \ -log_file /tmp/KRATool_26_05_2023.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/omega.crt \ -source_kra_naming_context alpha.example.com \ -target_kra_naming_context omega.example.com \ -unwrap_algorithm AES \ -process_requests_and_key_records_only PROCESSING KRATOOL CONFIG FILE: ................................... FINISHED. SUCCESSFULLY processed kratool config file! Initializing source PKI security databases in '/export/pki/'. Retrieving token from CryptoManager. Retrieving source storage token called 'Internal Key Storage Token'. Retrieving source storage cert with nickname of 'storageCert cert-pki-tomcat KRA'. BEGIN: Obtaining the private key from the source storage token . . . Enter password for Internal Key Storage Token ************ FINISHED: Obtaining the private key from the source storage token. BEGIN: Obtaining the public key from the target storage certificate . . . FINISHED: Obtaining the public key from the target storage certificate. PROCESSING: xxxxxxxxxxxxxxxxxxxxxxxxx...... SUCCESSFULLY converted source LDIF file --> target LDIF file! FINISHED "KRATool -kratool_config_file /usr/share/pki/java-tools/KRATool.cfg -source_ldif_file /export/pki/alpha.ldif -target_ldif_file /export/pki/alpha2omega.ldif -log_file /tmp/DRMTool_20_05_2021.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/omega.crt -source_pki_security_database_pwdfile '/export/pki/password.cfg' -source_kra_naming_context 'alpha.example.com' -target_kra_naming_context 'omega.example.com' -process_requests_and_key_records_only"
注意或者,您可以创建一个受未授权访问的纯文本文件,其中包含一个被证书或证书数据库自动访问的密码。使用-source_pki_security_database_pwdfile < path_to_PKI_password_file> 命令行选项将此文件添加到
KRATool
中。 - 将
alpha2omega.ldif
文件复制到 omega.example.com :sftp root@omega.example.com sftp> cd /export/pki sftp> put alpha2omega.ldif sftp> quit
21.2.3. 将数据导入到新的 KRA 中
在 omega.example.com 上,以
root
用户身份:
- 进入
/export/pki
目录#
cd /export/pki
- 连接
ldif
文件:#
cat omega.ldif alpha2omega.ldif > omega_alpha.ldif
- 将
omega_alpha.ldif
文件导入到与 PKI KRA 关联的 LDAP 数据库中:#
/usr/lib64/dirsrv/slapd-omega/ldif2db -n <pki-kra-KRA> -i /export/pki/omega_alpha.ldif
- 启动 Directory 服务器:
#
systemctl start dirsrv@omega
- 启动 KRA 实例。
#
systemctl start pki-tomcatd@<pki-kra>
21.2.4. 从 KRA Agent Page 验证迁移的密钥是否存在
最后一步是执行从 KRA Agent 页面迁移的密钥恢复。
[root@pki1 pki]#
pki -d /root/nssdb/ -p 21080 -n '<PKI Administrator - example.com Security Domain>' kra-key-find
Enter password for Internal Key Storage Token ---------------- 3 key(s) matched ---------------- Key ID: 0x1 Algorithm: 1.2.840.113549.1.1.1 Size: 1024 Owner: UID=alpha1 Key ID: 0x2 Algorithm: 1.2.840.113549.1.1.1 Size: 1024 Owner: UID=alpha2 Key ID: 0x3 Algorithm: 1.2.840.113549.1.1.1 Size: 1024 Owner: UID=alpha3 ---------------------------- Number of entries returned 3 ----------------------------
21.2.5. 升级后测试
在升级前跟踪用户密钥的关键恢复操作。
过程 21.1. 密钥恢复测试
- 显示升级前创建的 base64 用户证书。
#
<pki -n 'PKI Administrator - example.com>' -c <Secret.123> ca-cert-export <0xd>
Serial Number: 0xd Subject DN: UID=alpha Issuer DN: CN=CA Signing Certificate,OU=pki-tomcat,O=example.com Security Domain Status: VALID Not Valid Before: Wed Jun 07 01:49:07 EDT 2023 Not Valid After: Mon Dec 04 01:49:07 EST 2023 ----BEGIN CERTIFICATE---- MIIDODCCAiCgAwIBAgIBDTANBgkqhkiG9w0BAQsFADBtMTUwMwYDVQQKDCxpZG1xZS5sYWIuZW5n LmJvcy5yZWRoYXQuY29tIFNlY3VyaXR5IERvbWFpbjETMBEGA1UECwwKcGtpLXRvbWNhdDEfMB0G A1UEAwwWQ0EgU2lnbmluZyBDZXJ0aWZpY2F0ZTAeFw0yMzA2MDcwNTQ5MDdaFw0yMzEyMDQwNjQ5 [...output truncated...] EJyoMFM+RaAcTh+C3S0JZEoKlAS3UlJOMxk3BFZdWpv7ia+1faV6LFPZSCZ/m8i2c3KZNxFW2xv1 DTIIVc7a1uEDApVDHf5aFcm0nGpEVeK+yvP4r1eD ----END CERTIFICATE---- - 使用此证书通过 KRA Agent UI 生成密钥恢复请求。
- 批准恢复请求。
#
pki -c <Secret.123> -n '<PKI Administrator - example.com Security Domain>' -p 8443 -P https kra-key-request-review <0x2> --action approve
----- Result ------ Request ID: 0x2 Type: recovery Status: approved - 从 KRA UI 下载密钥。