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

标签 java aes kerberos

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

GSSException: Failure unspecified at GSS-API level (Mechanism level: Encryption type AES256CTS mode with HMAC SHA1-96 is not supported/enabled)

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

知道我们的网络应用程序或 Java 或第三方缺少什么吗?我们正在使用 Spring 安全 Kerberos 扩展(对代码进行最少的修改以适应我们当前的 Spring 2.x 版本和其他身份验证要求)。

最佳答案

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

关注这个link - Java SE Downloads ,向下滚动并下载适用于您的特定 JDK 版本的 Java 加密扩展 (JCE) 无限强度管辖策略文件,并按照本教程中标题为: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 等)的东西。

关于java - GSSException : [. .] 不支持/启用使用 HMAC SHA1-96 的加密类型 AES256CTS 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956037/

相关文章:

scala - 在集群 (YARN) 模式下,Spark 上的 Kerberos 问题

java - 如何使用 Softlayer API 订购公共(public)和私有(private) Vlan

java - 多次执行应用程序后内存不足

java - 如何使用经纬度信息从集合中计算地理空间距离?

java - 如何使用OpenSSL解密Java AES加密数据?

java - 如何在 Java 中更改 kerberos 密码

java - 无法解析 Spring boot 项目中的 Spring AOP 类型

iphone - 在 IOS 中实现 AES256 加密

encryption - 使用 AES 和 Base64 加密字符串

php - Kerberos 和/或其他身份验证系统 - 所有 PHP 脚本的一次性登录