创建 Kerberos 服务主体名称和密钥表文件

必须执行本任务才能处理对 WebSphere® Application Server 的 SPNEGO Web 或 Kerberos 认证请求。您可以使用 Microsoft Windows、IBM i、Linux、Solaris、麻省理工学院 (MIT) 和 z/OS® 操作系统密钥分发中心 (KDC) 来创建 Kerberos 服务主体名称和密钥表文件。

关于此任务

使用 Microsoft Windows KDC 来创建 Kerberos 服务主体名称和密钥表文件:

在 Active Directory 域控制器机器上执行此任务。请完成下列步骤,以确保对相关联的密钥分发中心 (KDC) 正确配置运行 Active Directory 域控制器的 Windows 2003 Server。

  1. 在 Microsoft Active Directory 中为 WebSphere Application Server 创建用户帐户。

    单击开始 -> 程序 -> 管理工具 -> Active Directory 用户和计算机

    请使用 WebSphere Application Server 的名称。例如,如果正在 WebSphere Application Server 机器上运行的应用程序服务器名称为 myappserver.austin.ibm.com,请在 Active Directory 中创建名为 myappserver 的新用户。

    确保在计算机和域控制器下没有计算机名称 myappserver。如果已存在名称为 myappserver 的计算机,那么必须创建不同的用户帐户名称。
    • 单击开始 -> 程序 -> 管理工具 -> Active Directory 用户和计算机 -> 计算机
    • 单击程序 -> 管理工具 -> Active Directory 用户和计算机 -> 域控制器
  2. 使用 setspn 命令将 Kerberos 服务主体名称 <service name>/<fully qualified host name> 映射到 Microsoft 用户帐户。

    用于 SPNEGO Web 认证的服务名称必须是 HTTP。但是,Kerberos 认证的服务名称可以是 KDC 所允许的任何字符串。

    下面是用于 SPNEGO Web 认证的 setspn 命令用法示例:

    C:\Program Files\Support Tools>
    setspn -A HTTP/myappserver.austin.ibm.com myappserver
    注: 主机名必须是标准主机名。
    要点: 确保未将相同的服务主体名称 (SPN) 映射至多个 Microsoft 用户帐户。如果将同一个 SPN 映射至多个用户帐户,那么 Web 浏览器客户机可能会将 NT LAN 管理器 (NTLM) 令牌而不是 SPNEGO 令牌发送到 WebSphere Application Server。
  3. 创建 Kerberos 密钥表文件并使其可供 WebSphere Application Server 使用。使用 Windows Server 工具箱中的 ktpass 工具为 SPN 创建 Kerberos 密钥表文件 (krb5.keytab)。
    注: Kerberos 密钥表文件包含一组类似于用户密码的密钥。主机通过将其 Kerberos 密钥表文件存储在本地磁盘上来保护这些文件,这一点至关重要。

    使用 Windows Server 工具箱中的 ktpass 工具为服务主体名称 (SPN) 创建 Kerberos 密钥表文件。请使用与您正在使用的 Windows Server 级别匹配的最新版本 ktpass 工具。例如,对于 Windows 2003 Server,请使用此工具的 Windows 2003 版本。

    要确定 ktpass 工具的合适参数值,请从命令行运行 ktpass -? 命令。此命令将列示与特定操作系统相对应的 ktpass 工具是使用 -crypto RC4-HMAC 还是 -crypto RC4-HMAC-NT 参数值。要屏蔽工具箱的警告消息,必须指定 -ptype KRB5_NT_PRINCIPAL 参数值。

    Windows 2003 Server 版本的 ktpass 工具支持 RC4-HMAC 加密类型和单一数据加密标准 (DES)。有关 ktpass 工具的更多信息,请参阅 Windows 2003 Technical Reference - Ktpass overview

    下列代码显示了在命令行上输入 ktpass -? 命令时的可用功能。根据您使用的工具箱版本不同,此信息也可能有所不同。
    C:\Program Files\Support Tools>ktpass -?                                  
    Command line options:                                                     
                                                                              
    ---------------------most useful args                                     
    [- /]          out : Keytab to produce                                    
    [- /]        princ : Principal name (user@REALM)                          
    [- /]         pass : password to use                                      
                         use "*" to prompt for password.                      
    [- +]      rndPass : ... or use +rndPass to generate a random password    
    [- /]      minPass : minimum length for random password (def:15)          
    [- /]      maxPass : maximum length for random password (def:256)         
    ---------------------less useful stuff                                    
    [- /]      mapuser : map princ to this user account (default:     
    don't)                                                                    
    [- /]        mapOp : how to set the mapping attribute (default: add it)   
    [- /]        mapOp :  is one of:                                          
    [- /]        mapOp :        add : add value (default)                     
    [- /]        mapOp :        set : set value                               
    [- +]      DesOnly : Set account for des-only encryption (default:don't)  
    [- /]           in : Keytab to read/digest                                
    ---------------------options for key generation                           
    [- /]       crypto : Cryptosystem to use                                  
    [- /]       crypto :  is one of:                                          
    [- /]       crypto : DES-CBC-CRC : for compatibility                      
    [- /]       crypto : DES-CBC-MD5 : for compatibliity                      
    [- /]       crypto : RC4-HMAC-NT : default 128-bit encryption             
    [- /]        ptype : principal type in question                           
    [- /]        ptype :  is one of:                                          
    [- /]        ptype : KRB5_NT_PRINCIPAL : The general ptype-- recommended  
    [- /]        ptype : KRB5_NT_SRV_INST : user service instance             
    [- /]        ptype : KRB5_NT_SRV_HST : host service instance              
    [- /]         kvno : Override Key Version Number                          
                         Default: query DC for kvno.  Use /kvno 1 for Win2K   
    compat.                                                                   
    [- +]       Answer : +Answer answers YES to prompts.  -Answer answers     
    NO.                                                                       
    [- /]       Target : Which DC to use.  Default:detect                     
    ---------------------options for trust attributes (Windows Server 2003    
    Sp1 Only                                                                  
    [- /] MitRealmName : MIT Realm which we want to enable RC4 trust on.      
    [- /]  TrustEncryp : Trust Encryption to use; DES is default              
    [- /]  TrustEncryp :  is one of:                                          
    [- /]  TrustEncryp :        RC4 : RC4 Realm Trusts (default)              
    [- /]  TrustEncryp :        DES : go back to DES
    要点: 不要在 ktpass 命令中使用 -pass 开关来重置 Microsoft Windows 服务器帐户的密码。
    有关更多信息,请参阅 Windows 2003 Technical Reference - Ktpass overview
    根据加密类型的不同,可以通过下列其中一种方法使用 ktpass 工具来创建 Kerberos 密钥表文件。下一节描述了 ktpass 工具所使用的不同加密类型。运行 ktpass -? 命令来确定 Microsoft Windows 环境中的特定工具箱期望得到哪个 -crypto 参数值十分重要。
    • 单一 DES 加密类型:
      从命令提示符运行 ktpass 命令:
      ktpass -out c:\temp\myappserver.keytab
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM
      -mapUser myappserv 
      -mapOp set 
      -pass was1edu
      -crypto DES-CBC-MD5 
      -pType KRB5_NT_PRINCIPAL
      +DesOnly
      表 1. 将 ktpass 用于单一 DES 加密类型.

      下表描述如何将 ktpass 用于单一 DES 加密类型。

      选项 说明
      -out c:\temp\myappserver.keytab 密钥将写入此输出文件。
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM 用户登录名的并置,并且领域必须大写。
      -mapUser 密钥将映射至用户 myappserver。
      -mapOp 此选项设置映射。
      -pass was1edu 此选项是用户标识的密码。
      -crypto DES-CBC-MD5 此选项使用单一 DES 加密类型。
      -pType KRB5_NT_PRINCIPAL 此选项指定 KRB5_NT_PRINCIPAL 主体值。指定此选项以屏蔽工具箱警告消息。
      +DesOnly 此选项只生成 DES 加密内容。
    • RC4-HMAC 加密类型:
      要点: 仅当将 Windows 2003 Server 用作 KDC 时,RC4-HMAC 加密才受支持。
      在命令提示符下运行 ktpass 命令。
      ktpass -out c:\temp\myappserver.keytab 
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM 
      -mapUser myappserver
      -mapOp set 
      –pass was1edu 
      -crypto RC4-HMAC
      -pType KRB5_NT_PRINCIPAL
      表 2. 将 ktpass 用于 RC4-HMAC 加密类型
      选项 说明
      -out c:\temp\myappserver.keytab 密钥将写入此输出文件。
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM 用户登录名的并置,并且领域必须大写。
      -mapUser 密钥将映射至用户 myappserver。
      -mapOp 此选项设置映射。
      -pass was1edu 此选项是用户标识的密码。
      -crypto RC4-HMAC 此选项选择 RC4-HMAC 加密类型。
      -pType KRB5_NT_PRINCIPAL 此选项指定 KRB5_NT_PRINCIPAL 主体值。指定此选项以屏蔽工具箱警告消息。
    • 对于 RC4-HMAC-NT 加密类型
      在命令提示符下运行 ktpass 命令。
      ktpass -out c:\temp\myappserver.keytab 
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM 
      -mapUser myappserver 
      -mapOp set 
      -pass was1edu 
      -crypto RC4-HMAC-NT
      -pType KRB5_NT_PRINCIPAL
      表 3. 将 ktpass 用于 RC4-HMAC-NT 加密类型
      选项 说明
      -out c:\temp\myappserver.keytab 密钥将写入此输出文件。
      -princ HTTP/myappserver.austin.ibm.com@WSSEC.AUSTIN.IBM.COM 用户登录名的并置,并且领域必须大写。
      -mapUser 密钥将映射至用户 myappserver。
      -mapOp 此选项设置映射。
      -pass was1edu 此选项是用户标识的密码。
      -crypto RC4-HMAC-NT 此选项选择 RC4-HMAC-NT 加密类型。
      -pType KRB5_NT_PRINCIPAL 此选项指定 KRB5_NT_PRINCIPAL 主体值。指定此选项以屏蔽工具箱警告消息。
      将创建用于 SPNEGO 的 Kerberos 密钥表文件。

使用 iSeries KDC、Linux KDC、Solaris KDC 和 MIT KDC 来创建 Kerberos 服务主体名称和密钥表文件:

有关更多详细信息,请参阅 kadminkadmin.local addprincktadd 命令的 Kerberos 实现文档。

本任务在 Linux、Solaris 或 MIT KDC 机器上执行。

  1. 创建用于 Kerberos 认证的 Kerberos 服务主体,例如:
    WAS/testmach.austin.ibm.com 
    kadmin.local: addprinc WAS/testmach.austin.ibm.com 
  2. 将新创建的 Kerberos 服务主体 WAS/testmach.austin.ibm.com 添加到缺省 krb5.keytab 文件中,例如:
    kadmin.local: ktadd WAS/testmach.austin.ibm.com 

使用 z/OS KDC 来创建 Kerberos 服务主体名称和密钥表文件:

在可以使用“简单且受保护的 GSS-API 协商”(SPNEGO) Web 认证和 Kerberos 认证前,WebSphere Application Server 管理员必须先在运行 WebSphereApplication Server 的主机上创建 Kerberos 密钥表文件。

要创建 SPN,请执行以下操作:

  1. Kerberos 标识 (KERBNAME) 的格式必须为 <service>/<fully qualified system name>
  2. 以下示例会为 SPNEGO Web HTTP/host1.pok.ibm.com 创建 Kerberos SPN:
    ALTUSER ASCR1 KERB(KERBNAME(HTTP/host1.pok.ibm.com))
    避免故障 避免故障: 您应该确保 ALTUSER 命令中指定的受支持加密类型列表与 Kerberos 配置文件 krb5.conf 中指定的受支持加密类型列表一致。例如,如果 krb5.conf 配置文件指定只支持 aes256-cts-hmac-sha1-96,那么 ENCRYPT 操作数应该指定不支持除 AES256 以外的所有加密类型。gotcha
  3. 为此用户生成 Kerberos 密钥。要生成此密钥,密码必须与此标识相关联。请不要使用此标识来登录系统。每当需要新的 Kerberos 密钥时,请输入下面这两行。
    注: WebSphere 或 KDC 管理员必须知道此密码才能在密钥表文件中创建条目。
    ALTUSER ASCR1 PASSWORD(was1krb) NOEXPIRED
    ALTUSER ASCR1 NOPASSWORD
  4. 验证此用户是否具有有效的 Kerberos 段和密钥,例如:
    LISTUSER ASCR1 KERB NORACF
     USER=ASCR1                            
     KERB INFORMATION                      
     ----------------                      
     KERBNAME= HTTP/host1.pok.ibm.com        
     KEY VERSION= 001                      
     KEY ENCRYPTION TYPE= DES NODES3 NODESD

    要创建 Kerberos 密钥表 (krb5.keytab) 文件,请通过执行以下操作来使用 Java™ Kerberos ktab 命令 <$WAS_HOME>/java/bin/ktab

  5. 在命令行中,输入 ktab –help 命令以获取此命令的正确用法。例如:
    (host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(189):>ktab -help
    Usage: java com.ibm.security.krb5.internal.tools.Ktab [options]
    Available options:
            -l					list the keytab name and entries
            -a <principal_name> [password] 	add an entry to the keytab
            -d <principal_name>      	delete an entry from the keytab
            -k <keytab_name>			specify keytab name and path with FILE: prefix
            -m <source_keytab_name> <destination_keytab_name>      specify merging source keytab file name and destination keytab file name
       
  6. 在命令行中,使用 ktab 命令将 SPN 添加到缺省密钥表文件,例如:
    (host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(201):>ktab -a
    HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM ot56prod
    Done!
    Service key for principal HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM saved
  7. 验证缺省密钥表文件是否包含正确的 SPN,例如:
    (host1)CTC03:/PYRSA1/usr/lpp/zWebSphere/V7R1/java/J5.0/bin(202):>ktab
    1 entries in keytab, name: /etc/skrb/krb5.keytab
            KVNO    Principal
            ----    ---------
            1       HTTP/host1.pok.ibm.com@LSREALM.POK.IBM.COM
使密钥表文件可供 WebSphere Application Server 使用。将 krb5.keytab 文件从 KDC 复制到 WebSphere Application Server 机器上由 Kerberos 配置文件(krb5.inikrb5.conf)指定的位置。例如:
ftp> bin
ftp> put c:\temp\KRB5_NT_SEV_HST\krb5.keytab
注: Kerberos 密钥表配置文件包含类似于用户密码的密钥列表。主机通过将其 Kerberos 密钥表文件存储在本地磁盘上来保护这些文件很重要,这使这些文件只能被授权用户读取。
使用 validateKrbConfig 命令来验证 krb5.conf 和 krb5.keytab 文件,例如:
wsadmin>$AdminTask help validateKrbConfig 
注: Kerberos 密钥表文件由 Kerberos 和 SPNEGO Web 认证共享。此文件将装入一次,并且不可更新。

但是,如果已安装带有 SR3 的 JDK 1.6,那么不必如此。

注: 如果需要合并密钥表文件,那么建议您将 Java ktab 命令与 -m 选项配合使用。

结果

您已在 KDC 上创建 Kerberos 服务主体名称和密钥表文件,WebSphere Application Server 将使用该 KDC 来处理 SPNEGO 和/或 Kerberos 认证请求。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_kerb_create_spn
文件名:tsec_kerb_create_spn.html