将我们的域用户设置为支持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- 的features.html
我们的网络应用程序或Java或第三方缺少什么想法?我们正在使用Spring安全Kerberos扩展(使用最少的代码修改来适应我们当前的Spring 2.x版本和其他身份验证要求).
Mic*_*l-O 15
编辑(2017-05-06):即将推出的JDK版本将包含此功能.只需要设置config参数,请参见JDK-8157561.
请点击此链接 - Java SE下载,向下滚动并下载适用于您的特定JDK版本的Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files,并按照本教程中标题为5.4.2的过程进行操作.Kerberos和无限强度政策.
基本步骤如下:
找到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
Run Code Online (Sandbox Code Playgroud)注意到上述情况,我们需要将下载的JCE .jar文件添加到/usr/java/jdk1.7.0_17/jre/lib/security.
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
Run Code Online (Sandbox Code Playgroud)这些是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
Run Code Online (Sandbox Code Playgroud)我们需要将它们移开,并用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
Run Code Online (Sandbox Code Playgroud)重启任何使用JDK(Tomcat等)的东西.
| 归档时间: |
|
| 查看次数: |
11858 次 |
| 最近记录: |