15.6. 配置复制合作伙伴以使用基于证书的身份验证

您可以使用基于证书的身份验证,而不是使用绑定 DN 和密码向复制合作伙伴进行身份验证。
以下流程描述了如何将名为 server2.example.com 的新服务器添加到复制协议中,以及如何使用基于证书的身份验证在新主机和现有 server1.example.com 之间设置复制协议:
  1. 在两个主机上,设置基于证书的身份验证。详情请查看 第 9.9.1 节 “设置基于证书的身份验证”
  2. server1.example.com 主机上:
    1. 为两个服务器(如 cn=server1、example、dc=comcn=server2、dc=example、dc=com )创建帐户,并将客户端证书添加到对应的帐户。详情请查看:
      稍后两个服务器都使用这些帐户和证书在建立复制连接时进行身份验证。
    2. 创建组,如 cn=repl_server,ou=Groups,dc=example,dc=com,并添加两个服务器帐户。请参阅 第 8.1 节 “使用组”
    3. 创建副本条目,并将 nsds5ReplicaBindDNGroup 属性设置为上一步中创建的组的 DN:
      # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication \
          enable --suffix="dc=example,dc=com" --role="supplier" --replica-id="7" \
          --bind-group-dn="cn=repl_server,ou=Groups,dc=example,dc=com"
    4. 设置副本条目的间隔,Directory 服务器在其中检查组是否已更改为 0
      # dsconf -D "cn=Directory Manager" ldap://server1.example.com replication \
           set --suffix="dc=example,dc=com" --repl-bind-group-interval=0
  3. 初始化新的服务器:
    1. server2.example.com 上创建临时复制管理器帐户,如 cn=Replication Manager,cn=config
    2. server1.example.com 上,创建一个临时复制协议,它使用上一步中的帐户进行身份验证:
      # dsconf -D "cn=Directory Manager" ldap://server2.example.com repl-agmt \
           create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 \
           --conn-protocol=LDAPS --bind-dn="cn=Replication Manager,cn=config" \
           --bind-passwd="password" --bind-method=SIMPLE --init \
           temporary_agreement
      此协议使用之前创建的复制管理器帐户来初始化数据库。在此初始化前,server2.example.com 上的数据库为空,具有相关证书的帐户不存在。因此,在初始化数据库前无法使用证书复制。
  4. 初始化新的服务器后:
    1. server1.example.com 中删除临时复制协议:
      # dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-agmt \
           delete --suffix="dc=example,dc=com" temporary_agreement
    2. server2.example.com 中删除临时复制管理器帐户:
      # dsconf -D "cn=Directory Manager" ldap://server2.example.com replication \
           delete-manager --suffix="dc=example,dc=com" --name="Replication Manager"
  5. 在使用基于证书的身份验证的两个服务器上创建复制协议:
    1. server1.example.com 上:
      # dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-agmt \
           create --suffix="dc=example,dc=com" --host="server2.example.com" --port=636 \
           --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" \
           --init example_agreement
    2. server2.example.com 上:
      # dsconf -D "cn=Directory Manager" ldap://server2.example.com repl-agmt \
           create --suffix="dc=example,dc=com" --host="server1.example.com" --port=636 \
           --conn-protocol=LDAPS --bind-method="SSLCLIENTAUTH" \
           --init example_agreement
  6. 要验证复制是否正常工作,请在复制协议中显示 nsds5replicaLastUpdateStatus 属性:
    # dsconf -D "cn=Directory Manager" ldap://server1.example.com repl-agmt status --suffix="dc=example,dc=com" example_agreement
    有关可能的状态的详情,请查看 红帽目录服务器配置、命令和文件参考 中的 复制协议状态 附录。