我们最近升级了一个工具(使用java实现),现在很难连接到我们公司的一个内部端点。对于其他端点,它可以正常工作。假设它不工作的端点是xyz..com我们每次看到的错误是
javax.net.ssl.SSLHandshakeException: DH ServerKeyExchange does not comply to algorithm constraints
at sun.security.ssl.Alert.createSSLException(Alert.java:131)
at sun.security.ssl.Alert.createSSLException(Alert.java:117)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:311)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
at sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
at sun.security.ssl.DHServerKeyExchange$DHServerKeyExchangeConsumer.consume(DHServerKeyExchange.java:540)
at sun.security.ssl.ServerKeyExchange$ServerKeyExchangeConsumer.consume(ServerKeyExchange.java:111)
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:182)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:149)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1143)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1054)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)
at sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:708)
at sun.security.ssl.SSLSocketImpl.access$100(SSLSocketImpl.java:72)
at sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:961)
at sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:933)
我遵循以下建议:-
“原因:dhpublickey不符合算法约束”是什么意思?
然而,这似乎不起作用。
因为这个问题现在只在我们升级了这个工具之后才普遍存在,我们想知道这是否是因为新的jvm安全限制被强制执行,我们是否可以将任何内容作为jvm参数传递,或者只是在java.security文件下或其他地方进行修改以修复此恼人的错误。我们不想更改该端点使用的证书的任何内容。我是一个新手在密码学,因此任何帮助或建议在这里将不胜感激。
1条答案
按热度按时间rta7y2nd1#
我可以通过修改java加密策略来解决这个问题:-
对于dhkeysize,我不得不将2048替换为1024