21.2. KRA の移行

単純な KRA 移行には、次の手順が必要です。
alpha.example.com にある KRA にはデータが含まれていますが、omega.example.com にある KRA はまだ存在しません。
HostnamePKI KRA バージョン
alpha.example.comPKI KRA 10.5 on RHCS 9.7
omega.example.comPKI KRA 10.13 on RHCS 10.4

21.2.1. 新しいホストでの KRA の設定

omega.example.comroot ユーザーとして、以下のように設定します。
  1. omega.example.com に新しい PKI 10.13 KRA をインストールして設定します。
  2. KRA インスタンスを停止します。
    # systemctl stop pki-tomcatd@<pki-kra>
  3. 必要なファイルをすべてエクスポートするディレクトリーを作成します。
    # mkdir -p /export/pki
  4. KRA ストレージ証明書をファイルにエクスポートします。アルファ上の KRA から復号化された古いデータを再暗号化するには、後で 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:
    
  5. omega.crt ファイルを /export/pki ディレクトリーに移動します。
    # mv omega.crt /export/pki/
  6. Directory Server を停止します。
    # systemctl stop dirsrv@omega
    注記
    db2ldif がない場合は、389-ds-base-legacy-tools パッケージをインストールします。
  7. KRA LDAP データベース設定を抽出します。古いデータを新しいデータに変換するには、新しい KRA LDAP データベース設定が必要になります。
    # /usr/lib64/dirsrv/slapd-omega/db2ldif -n <pki-kra-KRA> -a /tmp/omega.ldif
  8. /tmp/omega.ldif ファイルを /export/pki ディレクトリーに移動します。
    # mv /tmp/omega.ldif /export/pki/

21.2.2. 以前のシステムからのコンテンツのエクスポート

alpha.example.comroot ユーザーとして以下を行います。
  1. 共通のディレクトリーを作成します。
    # mkdir -p /export/pki
  2. Directory Server を停止します。以下の例では、サーバーの名前は alpha です。
    # systemctl stop dirsrv@alpha
  3. KRA LDAP データベースから LDIF を生成します。
    # /usr/lib64/dirsrv/slapd-alpha/db2ldif -n <pki-kra-KRA> -a /tmp/alpha.ldif
  4. /tmp/alpha.ldif ファイルを /export/pki ディレクトリーに移動します。
    # mv /tmp/alpha.ldif /export/pki/
  5. KRA NSS セキュリティーデータベースをデータ領域にコピーします。
    # cp -p /var/lib/pki/<pki-kra>/alias/* /export/pki/
  6. /export/pki ディレクトリーに移動します。
    # cd /export/pki
  7. omega.example.com から、新しい KRA のストレージ証明書が含まれるフラットファイを取得します。
    sftp root@omega.example.com
    sftp> cd /export/pki
    sftp> get omega.crt
    sftp> quit
    
  8. 内部パスワードを取得します。
    # cat /var/lib/<instance_name>/conf/password.conf
  9. alpha.example.comKRATool を実行します。
    # 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 に追加します。
  10. 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.comroot ユーザーとして、以下のように設定します。
  1. /export/pki ディレクトリーに移動します。
    # cd /export/pki
  2. ldif ファイルを連結します。
    # cat omega.ldif alpha2omega.ldif > omega_alpha.ldif
  3. omega_alpha.ldif ファイルを、PKI KRA に関連付けられた LDAP データベースにインポートします。
    # /usr/lib64/dirsrv/slapd-omega/ldif2db -n <pki-kra-KRA> -i /export/pki/omega_alpha.ldif
  4. Directory Server を起動します。
    # systemctl start dirsrv@omega
  5. KRA インスタンスを起動します。
    # systemctl start pki-tomcatd@<pki-kra>

21.2.4. KRA エージェントページから移行したキーの存在の検証

最後に、KRA エージェントページから移行した鍵のキーリカバリーを実行します。
[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 キーリカバリーテスト

  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----
    
  2. この証明書を使用して、KRA エージェント UI を通じてキーリカバリー要求を生成します。
  3. リカバリー要求を承認します。
    # 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
    
  4. KRA UI からキーをダウンロードします。