gpt4 book ai didi

java - 通过 https 连接时出现 SSL 握手异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:00 24 4
gpt4 key购买 nike

当端点 URL 中包含 IP 地址时,我的 Java 应用程序能够使用 https SSL 连接到第三方应用程序。现在,当 IP 地址更改为主机名 时,我得到了“SSL 握手异常”。除此之外,没有代码更新或任何其他更改。唯一改变的是第三方在端点 URL 中使用主机名,而不是 IP 地址。

较早的网址:https://10.0.0.1:5368/invoke/Upload.Accept/receiveReply当前网址:https://service.serviceprovider.com:5368/invoke/Upload.Accept/receiveReply

知道是什么原因造成的以及如何解决吗?

如果需要更多详细信息,请告诉我。

下面是错误的堆栈跟踪:

javax.net.ssl.SSLHandshakeException: Could not generate secret
at sun.security.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:219)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1056)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:348)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:961)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at com.etsalat.adapter.sadad.PaymentLoadAdapter.run(PaymentLoadAdapter.java:130)
at java.lang.Thread.run(Thread.java:748)

Caused by: java.security.NoSuchAlgorithmException: TlsPremasterSecret SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122)
at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160)
at iaik.security.dh.DHKeyAgreement.engineGenerateSecret(Unknown Source)
at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:648)
at sun.security.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:217)

最佳答案

我之前遇到过同样的问题。

异常:如果您正在使用的数字签名 API 未添加到您的应用程序使用的 Java SDK,则会发生“SecretKeyFactory 不可用”。

将 API 添加到 Java SDK:1. 导航到 lib-signed 文件夹,然后将 API jar 文件(例如:iaik_jce.jar)复制到/jre/lib/ext。2.导航到/jre/lib/security,然后将以下内容添加到java.securitysecurity.provider.10=iaik.security.provider.IAIK注意:如果数字“10”正被另一个条目使用,请使用下一个可用的数字。

有关更多信息,请参阅:http://docs.oracle.com/cd/E61144_01/English/Install_and_Config/Automatic_Install_and_Config/helpmain.htm?toc.htm?89631.htm

关于java - 通过 https 连接时出现 SSL 握手异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43863669/

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