【发布时间】:2020-11-24 15:40:31
【问题描述】:
我们最近升级了我们的一个工具(使用 java 实现),现在它很难连接到我们公司的一个内部端点。对于其他端点,它工作正常。假设它不起作用的端点是 xyz.abc.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)
What does "Reason: DHPublicKey does not comply to algorithm constraints" mean?
但是这似乎不起作用。
由于这个问题现在只是在我们升级工具之后才普遍存在,我们想知道这是否可能是由于执行了新的 jvm 安全限制,有没有什么我们可以作为 jvm 参数传递或者可能只是在 java 下修改.security 文件或其他地方来修复这个恼人的错误。我们不想更改该端点使用的证书上的任何内容。 我是密码学的新手,因此我们将一如既往地感谢您提供任何帮助或建议。
【问题讨论】:
-
您能分享您的客户端 ssl 配置吗?
-
你的意思是我的 java 安装中的 java.security 文件?
-
不完全是...所以我感觉您的应用程序正在尝试执行 https 请求。如果是这种情况,您使用的是 http 客户端。那是什么类型的客户端,您是如何配置该客户端的 ssl 属性的。
-
它的 jenkins 工具试图通过 SSL 握手建立与内部端点的连接。由于 SSL 握手失败并出现这些错误,我尝试直接从该工具使用的 java 执行 SSLPoke,但它失败了有同样的错误 java SSLPoke my-endpoint port
标签: java security ssl encryption cryptography