在 Oracle® Solaris 11.2 中管理 Kerberos 和其他验证服务

退出打印视图

更新时间: 2014 年 9 月
 
 

Kerberos 加密类型

加密类型可标识执行加密操作时要使用的加密算法和模式。有关支持的加密类型的列表,请参见 krb5.conf(4)kdb5_util(1M) 手册页。

客户机向 KDC 请求票证时,KDC 必须使用其加密类型与客户机和服务器都兼容的密钥。Kerberos 协议允许客户机请求 KDC 将特定加密类型用于该客户机的票证回复部分,但不允许服务器向 KDC 指定加密类型。

更改加密类型之前,请考虑以下问题:

  • KDC 假定服务器支持与主体数据库中的服务器主体项关联的第一个密钥/加密类型。

  • 在 KDC 上,必须确保为主体生成的密钥与对该主体进行验证的系统兼容。缺省情况下,kadmin 命令将为所有支持的加密类型创建密钥。如果使用主体的系统不支持该缺省加密类型集,则您在创建主体时应限制这些加密类型。限制加密类型的两种建议方法是:在 kadmin addprinc 中使用 –e 标志;将 kdc.conf 文件中的 supported_enctypes 参数设置为该子集。如果 Kerberos 领域中的大多数系统都支持缺省加密类型集的子集,则应使用 supported_enctypes 参数。如果设置 supported_enctypes,则将指定 kadmin addprinc 在为特定领域创建主体时使用的缺省加密类型集。

  • 确定系统支持的加密类型时,请考虑系统中运行的 Kerberos 版本,以及为其创建服务器主体的服务器应用程序所支持的加密算法。例如,创建 nfs/hostname 服务主体时,应将加密类型限制为该主机上的 NFS 服务器支持的类型。

  • kdc.conf 文件中的 master_key_enctype 参数可用于控制加密主体数据库中各项的主密钥的加密类型。如果已创建 KDC 主体数据库,请勿使用此参数。可在创建数据库时使用 master_key_enctype 参数,以便将缺省主密钥加密类型从 aes256-cts-hmac-sha1-96 更改为其他加密类型。配置从 KDC 时,请确保所有从 KDC 都支持所选加密类型,并且其 kdc.conf 文件都包含完全相同的 master_key_enctype 项。另外,如果在 kdc.conf 中设置了 supported_enctypes,则还应确保将 master_key_enctype 设置为 supported_enctypes 中的加密类型之一。如果未正确处理其中任一问题,则主 KDC 可能无法使用从 KDC。

  • 在客户机上,可以通过 krb5.conf 文件中的参数控制客户机从 KDC 请求的加密类型。default_tkt_enctypes 参数用于指定客户机从 KDC 请求票证授予票证 (Ticket Granting Ticket, TGT) 时要使用的加密类型。客户机可使用 TGT 以一种更有效的方式获取其他服务器票证。如果客户机使用 TGT 请求服务器票证(称为 TGS 请求),则设置 default_tkt_enctypes 将提供客户机对加密类型(用于保护客户机和 KDC 之间的通信)的部分控制。请注意,default_tkt_enctypes 中指定的加密类型必须至少与 KDC 上存储的主体数据库中的一种主体密钥加密类型匹配。否则,TGT 请求将会失败。在大多数情况下,最好不要设置 default_tkt_enctypes,因为此参数可能会导致互操作性问题。缺省情况下,客户机代码会请求所有受支持的加密类型,而 KDC 会基于在主体数据库中找到的密钥来选择加密类型。

  • default_tgs_enctypes 参数可限制客户机在其 TGS 请求(用于获取服务器票证)中请求的加密类型。另外,此参数还可限制 KDC 在创建客户机和服务器共享的会话密钥时使用的加密类型。例如,如果客户机要在执行安全 NFS 时仅使用 3DES 加密,则应将 default_tgs_enctypes 设置为 des3-cbc-sha1。请确保客户机主体和服务器主体在主体数据库中具有 des-3-cbc-sha1 密钥。与 default_tkt_enctype 一样,在大多数情况下,最好不要设置此参数,因为当 KDC 和服务器上均未正确设置凭证时,此参数可能会导致互操作性问题。

  • 在服务器上,可使用 kdc.conf 文件中的 permitted_enctypes 参数来控制该服务器可接受的加密类型。此外,还可以指定该服务器在创建密钥表项时使用的加密类型。应避免使用上述任一方法来控制加密类型,而由 KDC 确定要使用的加密类型,因为 KDC 不会与服务器应用程序进行通信来确定要使用的密钥或加密类型。