java - 32 位 Linux 的 Java 8 Diffie Hellman 密钥大小问题
问题描述
在旧的 32 位 linux 系统上将我们的 java 从 1.7 升级到 1.8 后,我们在与 web 服务通信时收到以下错误消息:
原因:java.security.InvalidAlgorithmParameterException:DH 密钥大小必须是 64 的倍数,并且只能从 512 到 2048(含)。不支持特定的密钥大小 4096
linux发行版是:
unname -a
Linux XXX-XXX-S018 2.6.16.21-0.8-default #1 Mon Jul 3 18:25:39 UTC 2006 i686 i686 i386 GNU/Linux
分布:
猫 /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
奇怪的是,在降级到 java 1.7 后它可以正常工作。
同样的应用程序在不同的 64 位系统(使用 java 1.8)上运行 - 所以我们假设这可能是 os 体系结构(32 位)、操作系统的年龄(在这种情况下是 2006 年)和 java.util.
我们发现了一些关于最大长度为 2048 的开放 JDK 的错误报告——但我们目前使用的是 oracle 的常规 JDK。
谢谢你的帮助,
豪克
解决方案
请阅读https://www.oracle.com/technetwork/java/javase/8u151-relnotes-3850493.html
在 Oracle JRE 8u151 中,您将找到java.security
文件并将crypto.policy设置为'unlimited'
.
我假设您的 JRE7 已经安装了 Unlimited JRE 强度策略
较新的版本(8u161,..)默认启用无限强度。
请注意,Oracle JRE 8u151 在解码 gzip 流方面存在严重问题。与 Tomcat 等 Web/应用程序服务器一起使用时,.. 您必须禁用流压缩或升级到更高一点的https://bugs.java.com/view_bug.do?bug_id=JDK-8189789
推荐阅读
- unity3d - 当我尝试加载一个文件,但 AssetDataBase.GetDependencies() 返回文件夹时?
- rust - Rust 如何知道向量的生命周期取决于你推送给它的东西?
- sql - jpa 以相等方式加入不相关的列
- javascript - 我们可以知道用户最后一次截图或照片的时间是什么时候
- webrtc - RTCError:传输通道关闭(数据通道)-JANUS Webrtc 服务器
- ansible - 将 semodule 与 ansible 一起使用
- sql - 如何获得第一行或第二行
- laravel - 为不同类别显示不同的刀片形式
- visual-studio - Visual Studio Monokai 主题
- sql-server - 如何创建 MsSQL 过程以根据其他两个表过滤一个表?