创建 Kerberos 配置文件
Kerberos 配置文件包含客户机配置信息,其中包括相关领域的密钥分发中心 (KDC) 的位置、当前 Kerberos 领域的缺省值以及主机名到 Kerberos 领域的映射。使用 wsadmin 实用程序为 WebSphere® Application Server 创建 Kerberos 配置文件。
关于此任务
Kerberos 配置设置、Kerberos 密钥分发中心 (KDC) 名称,以及“简单且受保护的 GSS-API 协商机制” (SPNEGO) Web 认证和 Kerberos 认证的领域设置将在 Kerberos 配置文件中提供,或者通过 java.security.krb5.kdc and java.security.krb5.realm Java™ 虚拟机系统属性提供。
缺省位置是 c:\winnt\krb5.ini。
注: 如果 krb5.ini 文件不在 c:\winnt 目录中,那么可能位于 c:\windows 中。缺省位置是 /etc/krb5.conf。
在其他 Unix 平台上,缺省位置为 /etc/krb5/krb5.conf。
过程
- 通过运行 app_server_root/bin 目录中的 wsadmin 命令来启动命令行实用程序。
- 在 wsadmin 提示符下,输入以下命令:
$AdminTask help createKrbConfigFile
- 指定 createKrbConfigFile 命令参数。
表 1. createKrbConfigFile 命令参数. 此表列示可与 createKrbConfigFile 命令配合使用的参数:
选项 描述 <krbPath> 必需。提供 Kerberos 配置(krb5.ini 或 krb5.conf)文件的标准文件系统位置。 <realm> 必需。提供 kerberos 域名称。此属性的值由 SPNEGO 用来构成通过属性 com.ibm.ws.security.spnego.SPN<id>.hostname 指定的每个主机的 Kerberos 服务主体名称。 <kdcHost> 必需。提供 Kerberos 密钥分发中心 (KDC) 的主机名。 <kdcPort> 可选。提供 Kerberos 密钥分发中心的端口号。如果省略此端口,那么缺省值为 88。 <dns> 必需。缺省域名服务 (DNS) 的列表,各个 DNS 之间用管道字符分隔,用于产生标准主机名称。此列表中的第一个 DNS 是缺省域名服务。 <keytabPath> 必需。提供 Kerberos 密钥表文件的文件系统位置(包含路径及文件名)。 <encryption> 可选。标识支持的加密类型的列表,各个类型之间用管道字符分隔。缺省值为 des-cbc-md5。 - 指定加密类型。 支持以下加密类型:
- des-cbc-md5
- des-cbc-crc
- des3-cbc-sha1
- rc4-hmac
- arcfour-hmac
- arcfour-hmac-md5
- aes128-cts-hmac-sha1-96
- aes256-cts-hmac-sha1-96
注意: 并非所有可用 KDC 解决方案都支持先前所列的所有加密类型。在选择加密类型前,请参阅《Kerberos 管理员和用户指南》以确保 KDC 支持您所要使用的加密类型。确保 Kerberos 配置文件、Kerberos 密钥表文件、Kerberos 服务主体名称以及 Kerberos 客户机共用一种加密类型。例如,如果 Kerberos 客户机使用 RC4-HMAC 加密类型,那么目标服务器也必须支持 RC4-HMAC 加密类型,且 Kerberos 配置文件必须将 RC4-HMAC 列在 default_tgt_enctypes 和 default_tkt_enctypes 的最前面。
- 指定 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 = rc4-hmac des-cbc-md5 default_tgs_enctypes = rc4-hmac des-cbc-md5 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 协议的 Kerberos 凭单请求失败并且 KDC 返回 KRB_ERR_RESPONSE_TOO_BIG 错误代码时,Java Kerberos 库才使用 TCP 协议。udp_preference_limit =1
避免故障: 应用程序服务器接收到客户机请求时,如果您使用 TCP 协议并且 KDC 返回无效包,那么服务器上的 Kerberos 配置可能返回连接重置、IOException 或管道中断异常。应用程序服务器会进行三次尝试以捕获正确的 Kerberos 包。如果三次尝试中有一次返回正确的 Kerberos 包,那么表示系统成功处理客户机请求并且您可忽略这些异常。如果应用程序服务器在进行三次尝试后无法获取正确的 Kerberos 包,那么表示客户机请求失败。此时,请查看 KDC、网络和应用程序服务器配置以确定问题。gotcha
- 填写交叉领域环境的 Kerberos 配置文件的 [domain_realm] 部分
- [domain_realm]:提供从域名或主机名到域名的转换。标记名称可以是主机名或域名 (domain name)。域名 (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 上设置信任跨领域认证的信息。
- [domain_realm]:提供从域名或主机名到域名的转换。标记名称可以是主机名或域名 (domain name)。域名 (domain name) 以句点 ('.') 作为前缀来指示。关系的值是该特定主机或域的域名。主机名和域名 (domain name) 必须是小写。
- 将有关外部领域的信息添加至 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
- 向节添加数据。 将 [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 }
- 将 krb5.conf 文件许可权设置为 644。
这意味着您可读写该文件。但是,文件所属的组的成员及所有其他用户只能读取该文件。
由于 Kerberos 配置和密钥表文件是由 JVM 系统属性 java.security.krb5.conf 和 KRB5_KTNAME 分别设置,因此如果 SPNEGO Web 认证和 Kerberos 认证都处于已启用状态,那么您必须对它们使用相同的 Kerberos 配置和密钥表文件。
结果


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_kerb_create_conf
文件名:tsec_kerb_create_conf.html