GSSException:使用spnego在GSS-API(机制级别:不支持/启用HMAC SHA1-96的加密类型AES256CTS模式)中未指定失败

时间:2016-11-04 09:18:33

标签: java encryption kerberos spnego keytab

当我尝试使用keytab文件对Kerberos进行身份验证时,我遇到了下面提到的问题。

GSSException:在GSS-API级别未指定失败(机制级别:不支持/启用HMAC SHA1-96的加密类型AES256CTS模式)

我已按照http://spnego.sourceforge.net/pre_flight.htmlhttp://spnego.sourceforge.net/server_keytab.html中提到的步骤设置完整的环境。

以下是我的conf文件,

的krb5.conf

[libdefaults]

    default_tkt_enctypes = aes128-cts aes256-cts

    default_tgs_enctypes = aes128-cts aes256-cts

    permitted_enctypes   = aes128-cts aes256-cts

[realms]

ATHENA.LOCAL  = {

     kdc = cerberus.athena.local 

     default_domain = ATHENA.LOCAL 
}

[domain_realm]

    .ATHENA.LOCAL = ATHENA.LOCAL

login.conf的

spnego-client {
    com.sun.security.auth.module.Krb5LoginModule required;
};

spnego-server {
    com.sun.security.auth.module.Krb5LoginModule required
    storeKey=true
    useKeyTab=true
    keyTab="file:///E:/tomcat-7.0.55/bin/test.keytab"
    isInitiator=false;
};

custom-client {
    com.sun.security.auth.module.Krb5LoginModule required
    storeKey=true
    useKeyTab=true
    keyTab="file:///E:/tomcat-7.0.55/bin/test.keytab"
    principal=zeus;
};

有人可以告诉我摆脱这个问题的解决方案。

1 个答案:

答案 0 :(得分:2)

  1. 您正在锁定krb5.conf中允许的加密类型,以便在您想要执行AES256时仅允许AES128加密类型,这是一个问题。
  2. 在krb5.conf的最底部,最后一行是错误的。应该是.athena.local = ATHENA.LOCAL(参考:http://web.mit.edu/KERBEROS/krb5-1.5/krb5-1.5.4/doc/krb5-admin/Sample-krb5_002econf-File.html
  3. 如果您的密钥表实际上支持AES256加密类型,则必须启用与密钥表相关的目录帐户以支持AES256加密类型。如果您使用的是Active Directory,则会有一个复选框。
  4. 您必须在Directory / Kerberos数据库中为要尝试进行身份验证的服务注册SPN。如果它是HTTP服务,它看起来像:HTTP / server1.athena.local
  5. 您需要服务器上存在的Java辖区无限强度策略文件来解密AES256加密。
  6. 最后但并非最不重要的是,您没有指定使用Kerberos的目录服务。它是Active Directory吗?红帽IdM? OpenDirectory? Heimdal Kerberos。这里不是很多。