需要你的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实施进行服务器端更改?或者我们只能在客户端使用?任何有关解决此问题的建议都受到高度赞赏.