/启用[..]加密类型AES256CTS与HMAC SHA1-96模式不支持:GSSExceptio

2019-08-01 15:19发布

设置我们的域用户,以支持Kerberos标记(在Windows Server 2008 R2)AES加密,在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

任何想法什么遗漏在我们的网络应用程序或Java,或第三方? 我们正在使用Spring安全Kerberos扩展(用最少的代码修改,以适应我们目前的春天2.x版和附加身份验证要求)。

Answer 1:

编辑 (2017年5月6日):即将来临的JDK版本都会有这个包括在内。 只有一个配置参数需要进行设置,见JDK-8157561 。

按照此链接- Java SE下载 ,向下滚动并下载特定JDK版本的Java加密扩展(JCE)无限强度权限策略文件,并按照程序在本教程中标题为: 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的,等等)。



文章来源: GSSException: [..] Encryption type AES256CTS mode with HMAC SHA1-96 is not supported/enabled