小编Nac*_*pat的帖子

SSL握手 - java.security.InvalidAlgorithmParameterException问题

需要你的java问题的建议.

目前,我们在使用Java代码访问Web服务时遇到问题.我们的供应商使用SSL - RSA 2048位(SHA256withRSA),DH(Diffie-Hellman算法)素数值大于1024的SSL.我们在生产中有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
Run Code Online (Sandbox Code Playgroud)

这是已知的java的bug /限制,它已在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提交的变通方法:使用BouncyCastle的JCE实现,它不会强制实施此限制,也不会直接使用BigNumber API.

我们无法升级到最新的java版本.我们可以实施任何解决此SSL握手问题的方法吗?我们是否需要对bouncycastle实施进行服务器端更改?或者我们只能在客户端使用?任何有关解决此问题的建议都受到高度赞赏.

java ssl java-6

5
推荐指数
1
解决办法
228
查看次数

标签 统计

java ×1

java-6 ×1

ssl ×1