16.2. 验证 Kerberos keytab 文件是否与 IdM 数据库同步

当您更改 Kerberos 密码时,IdM 会自动生成一个新的对应的 Kerberos 密钥,并递增其密钥版本号 (KVNO)。如果没有使用新密钥和 KVNO 更新 Kerberos keytab,则任何依赖于该 keytab 来检索有效密钥的服务可能无法对 Kerberos 密钥分发中心 (KDC) 进行身份验证。

如果您的其中一个 IdM 服务无法与另一个服务通信,请使用以下步骤验证您的 Kerberos keytab 文件是否与 IdM 数据库中存储的密钥同步。如果它们没有同步,请使用更新的密钥和 KVNO 检索 Kerberos keytab。这个示例比较并检索 IdM 服务器的更新 DNS 主体。

先决条件

  • 您必须作为 IdM admin 帐户进行身份验证来检索 keytab 文件
  • 您必须以 root 帐户身份验证来修改其他用户拥有的 keytab 文件

流程

  1. 显示您要验证的 keytab 中的主体的 KVNO。在以下示例中,/etc/named.keytab 文件具有作为 KVNO 为 2 的 DNS/server1.idm.example.com@EXAMPLE.COM 主体的密钥。

    [root@server1 ~]# klist -ekt /etc/named.keytab
    Keytab name: FILE:/etc/named.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac)
       2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
  2. 显示 IdM 数据库中存储的主体的 KVNO。在本例中,IdM 数据库中密钥的 KVNO 与 keytab 中的 KVNO 不匹配。

    [root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM
    DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 3
  3. 作为 IdM admin 帐户进行身份验证。

    [root@server1 ~]# kinit admin
    Password for admin@IDM.EXAMPLE.COM:
  4. 为主体检索更新的 Kerberos 密钥,并将其存储在其 keytab 中。以 root 用户身份执行此步骤,以便您可以修改 /etc/named.keytab 文件,它的所有者为 named 用户。

    [root@server1 ~]# ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab

验证

  1. 在 keytab 中显示主体的更新 KVNO。

    [root@server1 ~]# klist -ekt /etc/named.keytab
    Keytab name: FILE:/etc/named.keytab
    KVNO Timestamp           Principal
    ---- ------------------- ------------------------------------------------------
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac)
       4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
  2. 显示 IdM 数据库中存储的主体的 KVNO,并确保它与 keytab 中的 KVNO 匹配。

    [root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM
    DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 4