13.8. 証明書システムのバックアップと復元

Certificate System には、バックアップと復元のツールは含まれません。ただし、Certificate System コンポーネントは手動でアーカイブおよび復元できます。このコンポーネントは、証明書または鍵の情報が失われた場合に情報にアクセスできないデプロイメントに必要な場合があります。Certificate System の主な部分は、データ損失やハードウェアに障害が発生した場合に、通常 3 つにバックアップする必要があります。
  • 内部データベース。サブシステムは LDAP データベースを使用してデータを保管します。Directory Server は、独自のバックアップスクリプトと手順を提供します。
  • セキュリティーデータベース。セキュリティーデータベースは、証明書とキー情報を保管します。これらが HSM に保存されている場合は、データをバックアップする方法は HSM ベンダーのドキュメントを参照してください。情報がインスタンスの alias ディレクトリーのデフォルトディレクトリーに保存されている場合は、インスタンスディレクトリーを使用してバックアップします。これを個別に作成するには、tar または zip などのユーティリティーを使用します。
  • インスタンスディレクトリー。インスタンスディレクトリーには、すべての設定ファイル、セキュリティーデータベース、その他のインスタンスファイルが含まれます。これは、tarzip などのユーティリティーを使用してバックアップできます。

13.8.1. LDAP 内部データベースのバックアップおよび復元

Red Hat Directory Server のドキュメント には、データベースのバックアップおよび復元の詳細情報が記載されています。

13.8.1.1. LDAP 内部データベースのバックアップ

Directory Server インスタンスをバックアップするために、2 組のツールを使用できます。各バックアップツールには、生成したファイルを復元するツールがあります。
  • db2ldif ツールは、ldif2db ツールを使用して復元できる LDIF ファイルを作成します。
  • db2ldif コマンドは、bak2db ツールを使用して復元できる LDIF ファイルを作成します。
13.8.1.1.1. db2ldif を使用したバックアップ
db2ldif コマンドを実行すると、--n オプションで指定した単一のサブシステムデータベースのバックアップを作成します。
注記
db2ldif コマンドは dirsrv ユーザーで実行するため、/root/ ディレクトリー配下に書き込み権限がないため、書き込みが可能なパスを提供する必要があります。
  1. PKI サブシステムが使用する各 Directory Server データベースをバックアップします。以下の pki-server ca-db-config-show コマンドを使用して、指定のサブシステムのデータベース名を確認することができます。
    以下に例を示します。
    # db2ldif -V -n pki-tomcat-CA -a /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif
    Exported ldif file: /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif
    ldiffile: /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif
    [05/Nov/2020:10:17:53.835635923 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [05/Nov/2020:10:17:53.845938266 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [05/Nov/2020:10:17:53.851851787 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [05/Nov/2020:10:17:53.874058831 -0500] - INFO - ldbm_back_ldbm2ldif - export pki-tomcat-CA: Processed 67 entries (100%).
    [05/Nov/2020:10:17:53.884181122 -0500] - INFO - dblayer_pre_close - All database threads now stopped
  2. 個々のサブシステムデータベースをすべてバックアップする以外に、userRoot-n オプションとして追加することでメインデータベースをバックアップできます。以下に例を示します。
    # db2ldif -V -n userRoot -a /var/lib/dirsrv/slapd-pki1/ldif/userRoot.ldif
ldif2db を使用して LDIF ファイルを復元するには、「ldif2db を使用した復元」 を参照してください。
13.8.1.1.2. db2bak を使用したバックアップ
db2bak コマンドを実行すると、Directory Server (および Directory Server インスタンスが維持するその他のデータベース) の全 Certificate System サブシステムデータベースがバックアップされます。
以下に例を示します。
# db2bak

Back up directory: /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_05_11_20_21
注記
db2bak コマンドを dirsrv ユーザーで実行するため、ターゲットディレクトリーは dirsrv で書き込み可能でなければなりません。引数を指定せずにコマンドを実行すると、db2bak が適切な書き込み権限を持つ /var/lib/dirsrv/slapd-<instance_name>/bak ディレクトリーにバックアップが作成されます。
bak2db を使用して LDIF ファイルを復元するには、「bak2db を使用した復元」 を参照してください。

13.8.1.2. LDAP 内部データベースの復元

Directory Server インスタンスをバックアップする方法に応じて、対応するファイルで ldif2dbまたはbak2db を使用して、データベースを復元してください。
注記
データベースを復元する前に、インスタンスを停止してください。
13.8.1.2.1. ldif2db を使用した復元
db2ldif で LDIF ファイルを作成している場合は、ldif2db コマンドを使用して、Directory Server インスタンスを停止してファイルをインポートします。1 つのデータベースを指定して、バックアップから復元できます。以下に例を示します。
  1. Directory Server インスタンスを停止します。
    # systemctl stop dirsrv@instance_name
  2. -n オプションで指定されたサブシステムに対して、-i オプションによって指定したファイルをインポートします。
    # ldif2db -V -n pki-tomcat-CA -i /var/lib/dirsrv/slapd-pki1/ldif/pki-ca-backup.ldif
    importing data ...
    [06/Nov/2020:09:27:07.103094925 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [06/Nov/2020:09:27:07.118712207 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ……...
    [06/Nov/2020:09:27:09.213947960 -0500] - INFO - import_main_offline - import pki-tomcat-CA: Closing files...
    [06/Nov/2020:09:27:09.470742715 -0500] - INFO - dblayer_pre_close - All database threads now stopped
    [06/Nov/2020:09:27:09.479321728 -0500] - INFO - import_main_offline - import pki-tomcat-CA: Import complete.  Processed 67 entries in 2 seconds. (33.50 entries/sec)
  3. Directory Server インスタンスを開始します。
    # systemctl start dirsrv@instance_name
13.8.1.2.2. bak2db を使用した復元
db2bak を使用してバックアップファイルを作成している場合は、Directory Server を停止し、bak2db コマンドを使用してファイルをインポートします。単一のデータベースを指定して、バックアップから復元することもできます。以下に例を示します。
  1. Directory Server インスタンスを停止します。
    # systemctl stop dirsrv@instance_name
  2. -n オプションで指定したサブシステムのファイルをインポートします。
    # bak2db /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/ -n pki-tomcat-CA -V
    [06/Nov/2020:09:41:02.984808879 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [06/Nov/2020:09:41:02.991860094 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ......
    [06/Nov/2020:09:41:12.853686475 -0500] - INFO - dblayer_copy_directory - Restoring file 40 (/var/lib/dirsrv/slapd-pki1/db/pki-tomcat-CA/seeAlso.db)
    [06/Nov/2020:09:41:12.873881494 -0500] - WARN - dblayer_start - DB already started.
    [06/Nov/2020:09:41:12.883966616 -0500] - INFO - dblayer_pre_close - All database threads now stopped
    [06/Nov/2020:09:41:12.888381193 -0500] - INFO - dblayer_restore -  Removing staging area /var/lib/dirsrv/slapd-pki1/db/../fribak.
    また、-n オプションを指定せずにコマンドを使用して、バックアップから完全なデータベースを復元することもできます。以下に例を示します。
    # bak2db /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/ -V
    [06/Nov/2020:09:53:01.977785135 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [06/Nov/2020:09:53:01.994426925 -0500] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    .........
    [06/Nov/2020:09:53:02.800340285 -0500] - INFO - dblayer_restore - Restoring file 68 (/var/lib/dirsrv/slapd-pki1/db/DBVERSION)
    [06/Nov/2020:09:53:02.814235053 -0500] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-pki1/bak/pki1-2020_11_06_09_40_21/DBVERSION to /var/lib/dirsrv/slapd-pki1/db/DBVERSION
    [06/Nov/2020:09:53:03.317071092 -0500] - INFO - dblayer_pre_close - All database threads now stopped
  3. Directory Server インスタンスを開始します。
    # systemctl start dirsrv@instance_name

13.8.2. インスタンスディレクトリーのバックアップおよび復元

インスタンスディレクトリーには、サブシステムインスタンスのすべての設定情報が含まれているため、インスタンスディレクトリーのバックアップを作成すると、内部データベースに含まれていない設定情報が保持されます。
注記
インスタンスまたはセキュリティーデータベースをバックアップする前にサブシステムインスタンスを停止します。
  1. サブシステムインスタンスを停止します。
    systemctl stop pki-tomcatd@instance_name.service
  2. ディレクトリーを圧縮ファイルに保存します。
    # cd /var/lib/pki/
    # tar -chvf /export/archives/pki/instance_name.tar instance_name/
    以下に例を示します。
    # cd /var/lib/pki/
    # tar -chvf /tmp/test.tar pki-tomcat/ca/
    pki-tomcat/ca/
    pki-tomcat/ca/registry/
    pki-tomcat/ca/registry/ca/
    ...........
    
  3. サブシステムインスタンスを再起動します。
    systemctl start instance_name
データが破損したり、ハードウェアが破損している場合に、Certificate System のバックアップファイル (alias バックアップおよび完全なインスタンスのディレクトリーバックアップ) の両方を使用して、現在のディレクトリーを交換できます。データを復元するには、unzip ツールまたは tar ツールを使用してアーカイブファイルを圧縮解除し、既存のファイルにアーカイブをコピーします。
インスタンスディレクトリーを復元するには、以下を実行します。
  1. アーカイブを展開します。
    cd /export/archives/pki/
    tar -xvf instance_name.tar
    以下に例を示します。
    # cd /tmp/
    # tar -xvf test.tar
    pki-tomcat/ca/
    pki-tomcat/ca/registry/
    pki-tomcat/ca/registry/ca/
    pki-tomcat/ca/registry/ca/default.cfg
    .........
    
  2. サブシステムインスタンスが停止していない場合は停止します。
    systemctl stop pki-tomcatd@instance_name.service
  3. アーカイブされたファイルをコピーして、インスタンスディレクトリーを復元します。
    cp -r /export/archives/pki/instance_name /var/lib/pki/instance_name
    以下に例を示します。
    # cp -r /tmp/pki-tomcat/ca/ /var/lib/pki/pki-tomcat/ca/
  4. サブシステムインスタンスを再起動します。
    systemctl start pki-tomcatd@instance_name.service