29.2. 重新打包 Kerberos 主体
重新打包 Kerberos 主体会将带有更高密钥版本号(KVNO)的新 keytab 条目添加到主体的 keytab。原始条目保留在 keytab 中,但不再用于发出票据。
- 查找所需时间段内发布的所有 keytab。例如,以下命令使用
ldapsearch
工具显示 2016 年 1 月 1 日 1 日和 11:59 PM 在 2016 年 12 月 31 日创建的所有主机和服务主体:# ldapsearch -x -b "cn=computers,cn=accounts,dc=example,dc=com" "(&(krblastpwdchange>=20160101000000)(krblastpwdchange<=20161231235959))" dn krbprincipalname
# ldapsearch -x -b "cn=services,cn=accounts,dc=example,dc=com" "(&(krblastpwdchange>=20160101000000)(krblastpwdchange<=20161231235959))" dn krbprincipalname
- searchbase (
-b
)定义ldapsearch
查找主体的子树:- 主机主体存储在 cn=computers,cn=accounts,dc=example,dc=com 子树下。
- 服务主体存储在 cn=services,cn=accounts,dc=example,dc=com 子树下。
krblastpwdchange
参数按上次更改日期过滤搜索结果。参数接受 GMT 中日期和 HHMMSS 格式的 YYYYMMDD 格式。- 指定
dn
和krbprincipalname
属性将搜索结果限制为条目名称和主体。
- 对于需要重新密钥主体的每个服务和主机,请使用
ipa-getkeytab
工具来检索新的 keytab 条目。传递以下选项:- 用于指定主体的
--principal
(-p
)用于指定原始keytab 位置的 --key
tab(-k
)用于指定身份管理服务器主机名的--server
(-s
)
例如:- 在
/etc/krb5.keytab
的默认位置中使用 keytab 重新密钥主机主体:# ipa-getkeytab -p host/client.example.com@EXAMPLE.COM -s server.example.com -k /etc/krb5.keytab
- 在
/etc/httpd/conf/ipa.keytab
的默认位置重新密钥 Apache 服务的 keytab:# ipa-getkeytab -p HTTP/client.example.com@EXAMPLE.COM -s server.example.com -k /etc/httpd/conf/ipa.keytab
重要某些服务(如 NFS 版本 4)只支持一组有限的加密类型。将适当的参数传递给 ipa-getkeytab 命令,以正确配置 keytab。
- 可选。验证您是否成功更新了主体。使用
klist
实用程序列出所有 Kerberos 票据。例如,要列出/etc/krb5.keytab
中的所有 keytab 条目:# klist -kt /etc/krb5.keytab Keytab: WRFILE:/etc/krb5.keytab KVNO Timestamp Principal ---- ----------------- -------------------------------------------------------- 1 06/09/16 05:58:47 host/client.example.com@EXAMPLE.COM(aes256-cts-hmac-sha1-96) 2 06/09/16 11:23:01 host/client.example.com@EXAMPLE.COM(aes256-cts-hmac-sha1-96) 1 03/09/16 13:57:16 krbtgt/EXAMPLE.COM@EXAMPLE.COM(aes256-cts-hmac-sha1-96) 1 03/09/16 13:57:16 HTTP/server.example.com@EXAMPLE.COM(aes256-cts-hmac-sha1-96) 1 03/09/16 13:57:16 ldap/server.example.com@EXAMPLE.COM(aes256-cts-hmac-sha1-96)
输出显示client.example.com
的 keytab 条目使用更高的 KVNO 重新密钥。原始 keytab 仍存在于数据库中,与之前的 KVNO 一起。针对之前的 keytab 发出的票据继续起作用,而使用 KVNO 最高的密钥签发新的票据。这可以避免对系统操作造成任何干扰。