当前位置: 首页 > 知识库问答 >
问题:

SSLException:证书中的主机名不匹配:!=

罗新
2023-03-14

我试图从java调用Heroku的开发人员api,但是我得到了以下异常:

    Exception in thread "main" javax.net.ssl.SSLException: hostname in certificate didn't match: <50.19.233.255> != <*.heroku.com>

我的代码如下所示:

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("https://api.heroku.com/apps");
    String token = "d6d7ea6e-6e71-4f13-b0ff-ed9ee9d56c37";
    request.addHeader("Authorization", "Bearer "+token);
    HttpResponse response = client.execute(request);
    curl "https://api.heroku.com/apps" -H"Authorization: Bearer d6d7ea6e-6e71-4f13-b0ff-ed9ee9d56c37"

https://stackoverflow.com/a/7266768

https://stackoverflow.com/a/3904473

https://stackoverflow.com/a/25356821

建议我应该重写证书主机名检查,这肯定违背了这一点(当然生产还没有准备好)?

共有1个答案

倪培
2023-03-14

Apache HttpClient将域解析为IP地址和证书不匹配中描述了此问题。它似乎是您正在使用的HTTPClient版本中的一个bug,它将目标IP而不是目标主机名与主题证书进行比较。请改用固定版本的HTTPClient。

 类似资料:
  • 问题内容: 我一直在使用以下代码连接到Google的服务之一。这段代码在我的本地机器上运行良好: 我将这段代码放到了已阻止Google.com的生产环境中。根据要求,他们允许我访问IP:74.125.236.52,这是Google的IP之一,从而允许与Google服务器通信。我编辑了主机文件,也添加了该条目。 仍然无法访问URL,我想知道为什么。所以我将上面的代码替换为: 现在我得到这样的错误:

  • 问题内容: 我尝试使用自签名证书连接到服务器。我使用此代码接受所有证书。 但是尽管如此,我收到以下错误: 我确定我的证书代码已执行,那么可能是什么问题? 问题答案: 您可以使用

  • 我有一个httpsendpoint,我需要从wso2 API管理器访问它。(使用1.10)。我已经将证书文件添加到“client-truststore.jks”文件中。但现在它给出了如下错误。 我已经更新了Axis2.xml文件,如下所示。 如何使用WSO2 APIManager解决此问题以访问此https后端服务

  • 问题内容: 我在Android上使用HttpClient连接到https://someUrl.com/somePath。问题在于该站点的证书用于* .someUrl.com,而不是someUrl.com,因此我得到了SSLException。是的,网站上有些脚,是的,但是除非我能解决问题,否则我将陷入困境。有没有办法让HttpClient放松并接受证书? 问题答案: 这是我的(编辑)解决方案: 除

  • 问题内容: 我正在尝试使用带有自签名证书的Node.js 0.8.8创建TLS服务器/客户端设置。 基本的服务器代码如下所示 现在,当我尝试连接到该服务器时,我使用以下代码: 如果我删除线 从客户端代码,Node.js抛出一个错误告诉我。据我了解,这是由于它是一个自签名证书,并且没有其他方信任此证书。 如果我删除 同样,错误也消失了-但等于错误,实际上意味着我的连接未加密。无论如何,使用我可以访问

  • 问题内容: 我有代码: 当我在带有Node 0.9.4的桌面上运行它时,我在控制台中得到了这个: 当我在带有节点0.6.12的Netbook上运行它时,它们都可以正常运行而没有错误(302响应-我认为是正确的)。 有问题的Node.js主机名/ IP与证书的altnames不匹配 ,Rojuinex写道:“是的,浏览器问题…对不起”。“浏览器问题”是什么意思? UPD。在节点v0.8上回滚后,此问