gpt4 book ai didi

java - SSL 握手 - java.security.InvalidAlgorithmParameterException 问题

转载 作者:搜寻专家 更新时间:2023-11-01 00:54:10 25 4
gpt4 key购买 nike

需要您对 Java 问题的建议。

目前我们在使用 Java 代码访问 Web 服务时遇到问题。我们的供应商正在使用 SSL - RSA 2048 位 (SHA256withRSA),SSL 的 DH(Diffie–Hellman 算法)素数大于 1024。我们在生产中有 java 版本 1.6.0.10。

当我们执行代码时,出现错误 –

Caused by: java.lang.RuntimeException: Could not generate DH keypair at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:106)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:556)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:183)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
... 6 more
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627)
at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:100) ... 13 more

这是 java 的已知错误/限制,它已经在 v7 及更高版本中修复,但它仍然存在于“1.6.0.10”中

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7044060 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521495

在上面的链接中,我发现了下面的声明——

CUSTOMER SUBMITTED WORKAROUND : Using BouncyCastle's JCE implementation, which doesn't impose this restriction, or resorting to the BigNumber API directly.

我们无法升级到最新的 java 版本。有什么我们可以实现的来解决这个 SSL 握手问题吗?我们是否需要为 bouncycaSTLe 实现更改服务器端?或者我们只能在客户端使用?非常感谢有关解决此问题的任何建议。

最佳答案

BouncyCaSTLe 的 JCE 实现的 jar 可以在 LATEST JAVA RELEASES of Bouncy Castle Crypto package 下载。 .
所需的配置可以在To configure a JCE Provider中找到。 .
配置完成后。像下面的代码一样打印安全提供者信息。

Provider[]  providers = Security.getProviders();
for (int i = 0; i != providers.length; i++)
{
System.out.println(providers[i].getInfo());
}

查看是否显示“BouncyCaSTLe Security Provider v1.60”(假设您下载的是1.6版本)

关于java - SSL 握手 - java.security.InvalidAlgorithmParameterException 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com