gpt4 book ai didi

javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated error

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:17 31 4
gpt4 key购买 nike

这是一个关于调用 https 服务器的代码中发生的异常的问题。

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

它在内部使用 CloseableHttpClient 的实例来执行 PUT 调用。

此外,此代码是一个功能测试,将作为 CI 作业在远程计算机上运行。我已经看到一些 SSL 证书错误的解决方案,其中提到我们如何在 Java 中禁用 SSL 证书验证或在本地 JVM 中添加证书,其中之一在这里 -

'peer not authenticated' SSL certificate error usng DefaultHttpClient

不幸的是,它似乎无法正常工作,因为这是一台远程机器,我们无法将证书导入该机器。

String endPoint = "https://" + hostName + ":" + port + "/v1/service/data/put";

endPoint 在从 jar 调用的代码中设置。因此,我们也无法更改它。

如果我正在运行从独立类(通过 main 方法)对端点进行 PUT 调用的代码,它似乎运行良好,返回 200/OK。目前,如果它作为 .xml 文件中的 TestNG 类运行,则会发生异常。

添加为 Github gist 的代码是 here .

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

最佳答案

那里发生了很多事情,其中​​大部分与问题并没有真正的关系(例如缓存或其他用于设置调用的样板代码)。

在这种情况下,我通常会做的是将您的问题减少到越来越小的代码块,但仍然可以重现问题。例如,使用这些 HttpClient 组件,您可以进行任何 SSL 调用吗?试试这个代码,它需要 HttpClient 4.4,并且可以在没有有效证书的站点上工作:

    CloseableHttpClient client = HttpClients.custom()
.setSSLContext(sslContext)
.setSSLHostnameVerifier(new NoopHostnameVerifier())
.build();
HttpGet httpGet = new HttpGet(<your https URL here>);
httpGet.setHeader("Accept", <whatever appropriate for URL above>);

HttpResponse response = client.execute(httpGet);
System.out.println(response.getStatusLine().getStatusCode());

关于javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40559516/

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