15.7. 备份和恢复证书系统


证书系统不包括备份和恢复工具。但是,证书系统组件仍然可以手动存档和恢复,如果证书或密钥信息丢失,则可能需要访问这些信息。在出现数据丢失或硬件故障时,需要定期备份证书系统的三个主要部分:

  • 内部数据库。子系统使用 LDAP 数据库来存储其数据。目录服务器提供自己的备份脚本和步骤。
  • 安全数据库。安全数据库存储证书和密钥材料。如果它们存储在 HSM 上,请参阅 HSM 供应商文档来了解如何备份数据。如果信息存储在实例 别名 目录中的默认目录中,则使用实例目录备份。要单独备份,请使用 tarzip 等实用程序。
  • 实例目录。实例目录包含所有配置文件、安全数据库和其他实例文件。这可以通过 tarzip 等实用程序备份。

15.7.1. 备份和恢复 LDAP 内部数据库

Red Hat Directory Server 文档 包含有关备份和恢复数据库的更多详细信息。

15.7.1.1. 备份 LDAP 内部数据库

dsctl 命令的两对可用于备份目录服务器实例。每个 back-up 子命令都有一个对应部分来恢复它生成的文件:

  • db2ldif 子命令创建一个 LDIF 文件,您可以使用 ldif2db 子命令进行恢复。
  • db2bak 子命令创建一个备份文件,您可以使用 bak2db 子命令进行恢复。
15.7.1.1.1. 使用 db2ldif 备份

运行 db2ldif 子命令可备份单个子系统数据库。

注意

因为 db2ldif 子命令使用 dirsrv 用户运行,因此它没有在 /root/ 目录下写入的权限,因此您需要提供可以写入的路径。

备份 PKI 子系统使用的每个目录服务器数据库。您可以使用 pki-server ca-db-config-show 命令检查给定子系统的数据库名称。例如,要备份主数据库 userRoot

  1. 停止实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> stop
  2. 将数据库导出到 LDIF 文件中:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> db2ldif userroot /tmp/example.ldif
    OK group dirsrv exists
    OK user dirsrv exists
    ldiffile: /tmp/example.ldif
    [18/Jul/2018:10:46:03.353656777 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    [18/Jul/2018:10:46:03.383101305 +0200] - INFO - ldbm_back_ldbm2ldif - export userroot: Processed 160 entries (100%).
    [18/Jul/2018:10:46:03.391553963 +0200] - INFO - dblayer_pre_close - All database threads now stopped
    db2ldif successful
  3. 启动实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> start

要使用 ldif2db 子命令恢复 LDIF 文件,请参阅 第 15.7.1.2.1 节 “使用 ldif2db 恢复”

15.7.1.1.2. 使用 db2bak 备份

运行 db2bak 子命令备份该目录服务器的所有证书系统子系统数据库(以及该目录服务器实例维护的任何其他数据库)。例如:

例如:

  1. 停止实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> stop
  2. 备份数据库:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> db2bak
    OK group dirsrv exists
    OK user dirsrv exists
    [18/Jul/2018:14:02:37.358958713 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ...
    db2bak successful
  3. 启动实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> start
注意

因为 db2bak 子命令使用 dirsrv 用户运行,因此目标目录必须可由 dirsrv 写入。运行不带任何参数的子命令会在 /var/lib/dirsrv/slapd_- <instance_name>_/bak 文件夹中创建备份,其中 db2bak 具有正确的写权限。

要使用 bak2db 恢复 LDIF 文件,请参阅 第 15.7.1.2.2 节 “使用 bak2db 恢复”

15.7.1.2. 恢复 LDAP 内部数据库

根据您备份目录服务器实例的方式,使用带有对应文件的 ldif2dbbak2db 来恢复数据库。

注意

在恢复数据库前,请确保停止实例。

15.7.1.2.1. 使用 ldif2db 恢复

如果您使用 db2ldif 创建 LDIF 文件,请停止 Directory 服务器实例,并使用 ldif2db 子命令导入文件。您可以指定一个数据库来从备份中恢复。例如,对于主数据库,userRoot

  1. 停止 Directory 服务器实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> stop
  2. 从 LDIF 文件中导入数据:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> ldif2db userroot /tmp/example.ldif
    OK group dirsrv exists
    OK user dirsrv exists
    [17/Jul/2018:13:42:42.015554231 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ...
    [17/Jul/2018:13:42:44.302630629 +0200] - INFO - import_main_offline - import userroot: Import complete.  Processed 160 entries in 2 seconds. (80.00 entries/sec)
    ldif2db successful
  3. 启动 Directory 服务器实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> start
15.7.1.2.2. 使用 bak2db 恢复

如果您使用 db2bak 创建备份文件,请停止 Directory 服务器并使用 bak2db 子命令导入该文件。例如:

  1. 停止 Directory 服务器实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> stop
  2. 恢复数据库:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> bak2db /var/lib/dirsrv/slapd-<instance_name>/bak/<instance_name>-time_stamp/
    OK group dirsrv exists
    OK user dirsrv exists
    [20/Jul/2018:15:52:24.932598675 +0200] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000
    ...
    bak2db successful
  3. 启动 Directory 服务器实例:

    Copy to Clipboard Toggle word wrap
    # dsctl <instance_name> start

15.7.2. 备份和恢复实例目录

实例目录具有子系统实例的所有配置信息,因此备份实例目录会保留不包含在内部数据库中的配置信息。

注意

在备份实例或安全数据库之前,停止子系统实例。

15.7.2.1. 备份实例目录

  1. 停止子系统实例。

    Copy to Clipboard Toggle word wrap
    # pki-server stop <instance_name>
  2. 将目录保存到压缩文件中:

    Copy to Clipboard Toggle word wrap
    # cd /var/lib/pki/
    # tar -chvf /export/archives/pki/<instance_name>.tar <instance_name>/

    例如:

    Copy to Clipboard Toggle word wrap
    # 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. 重新启动子系统实例。

    Copy to Clipboard Toggle word wrap
    pki-server start <instance_name>

15.7.2.2. 恢复实例目录

如果数据损坏或者硬件损坏,您可以使用证书系统备份文件( 别名 数据库备份和完整实例目录备份)替换当前目录。要恢复数据,请使用 unziptar 工具解压缩存档文件,并将存档复制到现有文件中。

恢复实例目录:

  1. 解压缩存档:

    Copy to Clipboard Toggle word wrap
    cd /export/archives/pki/
    tar -xvf <instance_name>.tar

    例如:

    Copy to Clipboard Toggle word wrap
    # 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. 如果子系统实例尚未停止,则停止它。

    Copy to Clipboard Toggle word wrap
    pki-server stop <instance_name>
  3. 复制存档文件以恢复实例目录:

    Copy to Clipboard Toggle word wrap
    cp -r /export/archives/pki/<instance_name> /var/lib/pki/<instance_name>

    例如:

    Copy to Clipboard Toggle word wrap
    # cp -r /tmp/pki-tomcat/ca/ /var/lib/pki/pki-tomcat/ca/
  4. 确保恢复的文件的所有权和组权限设置为 pkiuser

    Copy to Clipboard Toggle word wrap
    # chown -R pkiuser:pkiuser /var/lib/pki/pki-tomcat/ca/
  5. 重新启动子系统实例。

    Copy to Clipboard Toggle word wrap
    pki-server start <instance_name>
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.