5

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

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

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

我们的 Web 应用程序或 Java 或第三方缺少什么想法?我们正在使用 Spring 安全性 Kerberos 扩展(只需进行最少的代码修改以适应我们当前的 Spring 2.x 版本和额外的身份验证要求)。

4

1 回答 1

16

编辑(2017-05-06):即将推出的 JDK 版本将包含此内容。只需要设置一个配置参数,请参阅JDK-8157561

点击此链接 - Java SE 下载,向下滚动并下载适用于您的特定 JDK 版本的 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,然后按照本教程中标题为:5.4.2 的过程进行操作。Kerberos 和无限强度策略

基本步骤如下:

  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 等)的程序。

于 2012-10-18T13:52:33.810 回答