在旧的32位linux系统上将我们的java从1.7升级到1.8后,我们在与Web服务通信时收到以下错误消息:
原因:java.security.InvalidAlgorithmParameterException:DH密钥大小必须是64的倍数,并且只能在512到2048之间(包括512和2048(。不支持特定密钥大小4096
linux发行版是:
uname-
Linux XXX-XXX-S018 2.6.16.21-0.8故障#1 7月3日星期一18:25:39 UTC 2006 i686 i686 i 386 GNU/Linux
分布:
cat/etc/*发布
LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32"SUSE Linux Enterprise Server 10(i586(版本=10
我们使用的Java版本(32位和64位版本相同(
Java版本:
jdk1.8.0_151
奇怪的是,在降级到java1.7之后,它可以毫无问题地工作。
同样的应用程序运行在不同的64位系统上(使用java 1.8(,所以我们认为这可能是操作系统架构(32位(、操作系统的时代(在本例中是2006年(和java的问题。
我们发现了一些关于开放JDK的错误报告,最大长度为2048,但我们目前使用的是oracle的常规JDK。
谢谢你的帮助,
Hauke
请阅读https://www.oracle.com/technetwork/java/javase/8u151-relnotes-3850493.html
在Oracle JRE 8u151中,您将找到java.security
文件,并将crypto.policy设置为值'unlimited'
。
我认为您的JRE7已经安装了无限制JRE强度策略
较新版本(8u161,..(默认启用了无限制强度。
请注意,Oracle JRE 8u151在解码gzip流时存在严重问题。当与web/应用程序服务器(如Tomcat(一起使用时。。您必须禁用流压缩或升级到更高的版本https://bugs.java.com/view_bug.do?bug_id=JDK-8189789