当前位置: 首页 > 面试题库 >

HttpClient 4.1的SSL“ Peer Not Authenticated”错误

董琦
2023-03-14
问题内容

我正在构建一个简单的应用程序监视器,以轮询我们的API URL之一,如果无法从响应中获取HTTP
200状态代码,则通过电子邮件将其发送给我们(这表明我们的API由于某种原因而关闭)。

我正在使用HttpClient 4.1 (这很重要,因为它的API与3.x 差别 很大 )。

我们的API使用SSL是安全的,但是请输入:

http://example.com/our-api

进入网络浏览器会将您重定向到

https://example.com/our-api

没有造成任何错误。

当HttpClient尝试访问此URL(http://example.com/our- api)时,它将失败,并显示一条javax.net.ssl.SSLPeerUnverifiedException异常消息,指出:

对等未认证

这篇文章证明了[这一点,]对于其他人来说,这很)常见(它还提供了一些解决此问题的方法-实际上,我今晚将尝试实施此解决方案)。

该其他帖子(以及与此类似的其他帖子)没有做的事情是解释为什么这首先发生!因此,与其问“我该如何解决”?我想我会问:“ 为什么会这样?
”在我继续提出一种建议的解决方案之前,我想知道我要解决的问题是什么;-)


问题答案:

如果服务器的证书是自签名的,则说明该证书已按设计工作,因此您必须将服务器的证书导入到密钥库中。

假设服务器证书是由著名的CA签名的,这是因为现代浏览器可用的CA证书的集合比JDK / JRE附带的有限证书的集合大得多。

您提到的其中一篇文章中给出的EasySSL解决方案只是掩盖了错误,并且您不知道服务器是否具有有效的证书。

您必须将正确的根CA导入密钥库以验证证书。原因是您无法使用现有的SSL代码解决此问题,这是为了防止您编写行为像安全的程序,但并非安全的程序。



 类似资料:
  • 问题内容: 我正在尝试通过节点https.request()获得一个网页。这样做会导致我的代码记录错误。使用节点请求模块具有相同的结果: 请求的问题:140398870042432:错误:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报意外消息:s23_clnt.c:658: 以下内容指示使用了错误的SSL版本,但我找不到更改版本的方法:url错误:“ss

  • 我使用Python3。Windows 7上的x 64位,在无法完全控制入站/出站流量处理的环境中。到本周为止,我已经能够使用标记pip,一切正常。本周,即使使用了标志,我也开始出现以下错误。 鉴于本周的pypi更改,我尝试将标志更改为,但这似乎没有帮助。 我还尝试下载和安装certifi、wincerstore和win32 certifi的轮子,以及针对此类问题的其他stackoverflow建议

  • null 但我想知道有没有办法解决这个问题...

  • 我使用Let's encrypt free SSL(默认情况下,我的主机提供商支持它),我检查了我在SSLShopper.com的网站(唯一的警告是:)和https://www.geocerts.com/SSL_checker。结果是我的网站通过了所有测试,除了。所以我不认为问题出在证书上,据我所知,telegram接受自签名证书。 我曾尝试在https://core.telegram.org/b

  • 我正在使用windows命令提示符,我刚刚安装了一个新的rails项目。我在尝试安装gem时出错了。上面写着 错误:找不到有效的gem“bundler” 我该如何解决这个问题?

  • 如何修复这个错误,发生在DebianLinux使用ssl命令与红宝石? /usr/lib/ruby/1.8/net/http.rb:586:在连接:SSL_connect返回=1 errno=0状态=未知状态:不支持的协议(OpenSSL::SSL::SSLError) 我找到了答案,我ḿ 将此作为其他用户的参考发布。