GSSException:[..] 不支持/启用具有 HMAC SHA1-96 的加密类型 AES256CTS 模式

2024-01-11

将域用户设置为支持 Kerberos 令牌的 AES 加密 (Windows Server 2008R2) 后,在 Web 应用程序服务器端,我们遇到以下异常:

GSSException:GSS-API 级别未指定故障(机制级别: 加密类型 AES256CTS 模式与 HMAC SHA1-96 不是 支持/启用)

奇怪的是,我们有 Java 6 (1.6.0_27) ,这意味着应该支持 AES,根据此文档:http://docs.oracle.com/javase/6/docs/technotes/guides/security/jgss/jgss-features.html http://docs.oracle.com/javase/6/docs/technotes/guides/security/jgss/jgss-features.html

您知道我们的 Web 应用程序、Java 或第三方中缺少什么吗?我们正在使用 Spring 安全性 Kerberos 扩展(只需进行最少的代码修改即可适应我们当前的 Spring 2.x 版本和附加身份验证要求)。


EDIT(2017-05-06):即将推出的 JDK 版本将包含此内容。只需要设置一个配置参数,参见JDK-8157561 http://bugs.java.com/view_bug.do?bug_id=JDK-8157561.

按照这个链接 - Java SE 下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html,向下滚动并下载适用于您的特定 JDK 版本的 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,然后按照本教程中的流程进行操作:5.4.2. Kerberos 和无限强度策略 https://cwiki.apache.org/confluence/display/DIRxSRVx11/5.4.2.+Kerberos+and+Unlimited+Strength+Policy.

基本步骤如下:

  1. 找到 JDK 的安全目录(下面显示 Unix):

    $ locate 'jre/lib/security' | grep 'lib/security$'
    /usr/java/jdk1.7.0_17/jre/lib/security
    /usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre/lib/security
    /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/security
    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/jre/lib/security
    
  2. 注意到上述情况,我们需要将下载的 JCE .jar 文件添加到/usr/java/jdk1.7.0_17/jre/lib/security.

  3. JCE .zip 文件包含以下内容(显示 JDK 1.7 的 JCE):

    $ ls -l UnlimitedJCEPolicy
    total 16
    -rw-rw-r-- 1 root root 2500 May 31  2011 local_policy.jar
    -rw-r--r-- 1 root root 7289 May 31  2011 README.txt
    -rw-rw-r-- 1 root root 2487 May 31  2011 US_export_policy.jar
    
  4. 这些是 JDK 的捆绑版本(同样是 1.7):

    $ ls -l /usr/java/jdk1.7.0_17/jre/lib/security/*.jar
    -rw-r--r--. 1 root root 2865 Mar  1  2013 /usr/java/jdk1.7.0_17/jre/lib/security/local_policy.jar
    -rw-r--r--. 1 root root 2397 Mar  1  2013 /usr/java/jdk1.7.0_17/jre/lib/security/US_export_policy.jar
    
  5. 我们需要将它们移开并用 JCE .zip 文件中包含的版本替换它们。我通常会执行以下操作:

    $ pushd /usr/java/jdk1.7.0_17/jre/lib/security/
    /usr/java/jdk1.7.0_17/jre/lib/security ~
    
    $ mkdir limited
    $ mv *.jar limited/
    
    $ cp ~/UnlimitedJCEPolicy/*.jar .
    $ ls -l *.jar
    -rw-r--r-- 1 root root 2500 Jun 25 12:50 local_policy.jar
    -rw-r--r-- 1 root root 2487 Jun 25 12:50 US_export_policy.jar
    
  6. 重新启动任何使用 JDK 的程序(Tomcat 等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GSSException:[..] 不支持/启用具有 HMAC SHA1-96 的加密类型 AES256CTS 模式 的相关文章

随机推荐