创建 Kerberos 配置文件

Kerberos 配置文件包含客户机配置信息,其中包括相关领域的密钥分发中心 (KDC) 的位置、当前 Kerberos 领域的缺省值以及主机名到 Kerberos 领域的映射。 使用 wsadmin 实用程序为 WebSphere® Application Server创建 Kerberos 配置文件。

有关此任务

注: 如果没有 Kerberos 密钥表文件 (krb5.keytab) ,那么不能使用 createkrbConfigFile wsadmin 命令。

Kerberos 配置设置, Kerberos 密钥分发中心 (KDC) 名称以及用于简单和受保护的 GSS-API 协商机制 (SPNEGO) Web 认证和 Kerberos 认证的域设置在 Kerberos 配置文件中提供,或者通过 java.security.krb5.kdc 和 java.security.krb5.realm Java™ 虚拟机系统属性。

如果没有 Kerberos 配置文件(krb5.inikrb5.conf),那么必须先使用 wsadmin 命令创建 Kerberos 配置文件,并将其放入单元中的每个实例。 请参阅以下缺省 Kerberos 配置文件及其位置:
  • [Windows]缺省位置为 c:\winnt\krb5.ini
    注: 如果 krb5.ini 文件未位于 c:\winnt 目录中,那么它可能位于 c:\windows中。
  • [Linux]缺省位置为 /etc/krb5.conf
  • [AIX][z/OS][HP-UX][IBM i][Solaris]在其他 Unix 平台上,缺省位置为 /etc/krb5/krb5.conf

过程

  1. 通过从 app_server_root/bin 目录运行 wsadmin 命令来启动命令行实用程序。
  2. wsadmin 提示符处,输入以下命令:
    $AdminTask help createKrbConfigFile 
  3. 指定 createKrbConfigFile 命令参数。
    表 1。 createKrbConfigFile 命令参数

    此表列示可与 createKrbConfigFile 命令配合使用的参数:

    选项 描述
    <krbPath> 必需。 提供 Kerberos 配置(krb5.inikrb5.conf)文件的标准文件系统位置。
    <realm> 必需。 提供 Kerberos 领域名称。 此属性的值由 SPNEGO 用来构成通过属性 com.ibm.ws.security.spnego.SPN<id>.hostname 指定的每个主机的 Kerberos 服务主体名称。
    <kdcHost> 必需。 提供 Kerberos 密钥分发中心 (KDC) 的主机名。
    <kdcPort> 可选。 提供 Kerberos 密钥分发中心的端口号。 如果省略此端口,那么缺省值为 88。
    <dns> 必需。 缺省域名系统 (DNS) 服务的列表,用管道字符分隔,用于生成标准主机名。 此列表中的第一个 DNS 是缺省域名服务。
    <keytabPath> 必需。 提供 Kerberos 密钥表文件的文件系统位置(包含路径及文件名)。
    <encryption> 可选。 标识支持的加密类型的列表,各个类型之间用管道字符分隔。
  4. 指定加密类型。
    支持以下加密类型:
    • aes128-cts-hmac-sha1-96
    • aes256-cts-hmac-sha1-96
    注意: 并非所有可用的 KDC 解决方案都支持先前列出的所有加密类型。 在选择加密类型前,请参阅《Kerberos 管理员和用户指南》以确保 KDC 支持您所要使用的加密类型。

    确保 Kerberos 配置文件、Kerberos 密钥表文件、Kerberos 服务主体名称以及 Kerberos 客户机共用一种加密类型。 例如,如果 Kerberos 客户机使用 aes128-cts-hmac-sha1-96 加密类型,那么目标服务器还必须支持 aes128-cts-hmac-sha1-96 加密类型,并且 Kerberos 配置文件必须首先在 default_tgt_enctypes 和 default_tkt_enctypes 中列出 aes128-cts-hmac-sha1-96 。

  5. 指定 krbPath 和 krbKeytab 位置类型。
    以下代码是 createKrbConfigFile 命令的示例:
    $AdminTask createKrbConfigFile {-krbPath c:/winnt/krb5.ini 
                                    -realm WSSEC.AUSTIN.IBM.COM 
                                    -kdcHost host1.austin.ibm.com 
                                    -dns austin.ibm.com|raleigh.ibm.com 
                                    -keytabPath c:/winnt/krb5.keytab}
    注: WebSphere 变量还可用于为 createKrbConfigFile 命令指定 krbPath 和 krbKeytab 位置路径。
    使用以下示例创建 c:/winnt/krb5.ini 文件:
    [libdefaults]
    	default_realm = WSSEC.AUSTIN.IBM.COM
    	default_keytab_name = FILE:c:\winnt\krb5.keytab
    	default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
    	default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
    	forwardable  = true
    	renewable  = true
    	noaddresses = true
    	clockskew  = 300
    [realms]
    	WSSEC.AUSTIN.IBM.COM = {
    		kdc = host1.austin.ibm.com:88
    		default_domain = austin.ibm.com
    	}
    [domain_realm]
    	.austin.ibm.com = WSSEC.AUSTIN.IBM.COM
    	.raleigh.ibm.com = WSSEC.AUSTIN.IBM.COM

    createKrbConfigFile 命令创建简单 Kerberos 配置文件。 可根据需要或者在您有交叉或可信领域环境时编辑此文件以指定 TCP 或 UDP 首选项。

    在 [libdefaults] 部分中,可指定 TCP 或 UDP 协议首选项。 缺省情况下, Java Kerberos 配置使用 UDP 协议。 但是, Java Kerberos 支持使用 udp_preference_limit 参数进行 TCP 或 UDP 协议配置。 如果需要使用 TCP 协议,请对 udp_preference_limit 参数值指定 1 以始终使用 TCP 协议。 例如:
    udp_preference_limit =1
    如果未指定此参数,那么仅当使用 UDP 协议的 Kerberos 凭单请求失败并且 KDC 返回 KRB_ERR_RESPONSE_TOO_BIG 错误代码时, Java Kerberos 库才会使用 TCP 协议。
    避免麻烦: 当应用程序服务器接收到客户机请求时,如果使用 TCP 协议并且 KDC 返回错误的包,那么服务器上的 Kerberos 配置可能会返回 "连接重置" , IOException 或 "中断管道" 异常。 应用程序服务器会进行三次尝试以捕获正确的 Kerberos 包。 如果三次尝试中有一次返回正确的 Kerberos 包,那么表示系统成功处理客户机请求并且您可忽略这些异常。 如果应用程序服务器在进行三次尝试后无法获取正确的 Kerberos 包,那么表示客户机请求失败。 此时,请查看 KDC、网络和应用程序服务器配置以确定问题。
  6. 填写交叉领域环境的 Kerberos 配置文件的 [domain_realm] 部分
    • [domain_realm]:提供从域名或主机名到域名的转换。 标记名称可以是主机名或域名 (domain name)。 域名由句点 (".") 的前缀指示。 关系的值是该特定主机或域的域名。 主机名和域名 (domain name) 必须是小写。
      如果不转换任何条目,那么主机领域会被视为已转换成大写的主机名域部分。 例如,以下 [domain_realm] 部分会将 tech.ibm.com 映射到 TEST.AUSTIN.IBM.COM 领域:
      [domain_realm]
      	.austin.ibm.com = WSSEC.AUSTIN.IBM.COM
      	.raleigh.ibm.com = WSSEC.AUSTIN.IBM.COM

      缺省情况下,austin.ibm.com 和 .raleigh.ibm.com 域中的所有其他主机会映射至 WSSEC.AUSTIN.IBM.COM。

      以下示例包含多个 Kerberos 域名:
      [domain_realm]
             .ibm.com =AUSTIN.IBM.COM
             ibm.com =AUSTIN.IBM.COM
             tech.ibm.com =TEST.AUSTIN.IBM.COM
             .fubar.org =FUBAR.ORG

      缺省情况下, ibm.com® 域中的所有其他主机都映射到 AUSTIN.IBM.COM 域和 fubar.org 域中的所有主机都映射到 FUBAR.ORG 域。

    记下主机 ibm.com 和 fubar.org的条目。 如果没有这些条目,那么这些主机会分别映射至领域 COM 和 ORG。

    对于同级信任跨领域认证,请参阅《Kerberos 管理员和用户指南》,以了解有关如何在 KDC 上设置信任跨领域认证的信息。

  7. 将有关外部领域的信息添加至 Kerberos 配置文件的 realms 和 domain_realm 部分:
    [realms]
           AUSTIN.IBM.COM = {
                 kdc = kdc.austin.ibm.com:88
                 default_domain = austin.ibm.com
           }
           FUBAR.ORG = {
                 kdc = kdc.fubar.org:88
                 default_domain = fubar.org
           }
    [domain_realm]
           austin.ibm.com = AUSTIN.IBM.COM
           .austin.ibm.com = AUSTIN.IBM.COM
           fubar.org = FUBAR.ORG
           .fubar.org = FUBAR.ORG

    可传递信任中,如果两个领域信任涉及授予凭单的中间领域,那么这两个领域彼此信任。 如果每个涉及授予服务凭单的领域都存在于信任路径中,那么将信任该凭单。 请参阅《Kerberos 管理员和用户指南》,以了解有关如何在 KDC 上配置可传递信任的信息。

    要设置传递信任,必须在 A 和 B 之间以及 B 和 C 之间定义具有跨域认证的独立域,但不能在 A 和 C 之间定义。 通过传递信任, REALMA 和 REALMC 可以相互通信,但只能通过 REALMB。
    REALMA	<->	REALMB	<->	REALMC
  8. 向节添加数据。
    将 [capaths] 节添加至每个 krb5.conf 文件。
    所有机器上的 krb5.conf 文件都必须列出 [realms] 节中的所有三个领域。 REALMA 必须列出它本身、REALMB 和 REALMC;REALMB 必须列出它本身、REALMA 和 REALMC;REALMC 必须列出它本身、REALMA 和 REALMB。 krb5.conf 文件的 [domain_realm] 节中列示了能够从 REALMA 执行到 REALMC 以及从 REALMC 执行到 REALMA 的所有三个主机名和域名。
    [capaths]
           REALMA.AUSTIN.IBM.COM = {
           		REALMB.AUSTIN.IBM.COM = .
           		REALMC.AUSTIN.IBM.COM = REALMB.AUSTIN.IBM.COM
                }
           REALMB.AUSTIN.IBM.COM = {
           		REALMC.AUSTIN.IBM.COM = .
           		REALMA.AUSTIN.IBM.COM = .
                }
           REALMC.AUSTIN.IBM.COM = {
           		REALMB.AUSTIN.IBM.COM = .
           		REALMA.AUSTIN.IBM.COM = REALMB.AUSTIN.IBM.COM
                }
  9. krb5.conf 文件许可权设置为 644。

    这意味着您可读写该文件。 但是,文件所属的组的成员及所有其他用户只能读取该文件。

    由于 Kerberos 配置和密钥表文件是由 JVM 系统属性 java.security.krb5.conf 和 KRB5_KTNAME 分别设置,因此如果 SPNEGO Web 认证和 Kerberos 认证都处于已启用状态,那么您必须对它们使用相同的 Kerberos 配置和密钥表文件。

结果

您现在已创建 Kerberos 配置文件。