首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请求HTTPS时JavaLite错误失败

请求HTTPS时JavaLite错误失败
EN

Stack Overflow用户
提问于 2018-03-23 12:46:57
回答 1查看 183关注 0票数 0

我使用的是JavaLite实现,请求HTTP服务时一切正常,但当尝试从HTTPS版本的服务获取数据时,我得到HttpException“失败的URL”。

下面是我的代码:

代码语言:javascript
复制
Get get = Http.get(url + "/eds/api/v1/certificados");
get.header("Authorization", "Basic " + Credentials);
get.header("APIKey", APIKey);
get.header("Accept", "application/json");
            
System.out.println(get.text());

还尝试使用

代码语言:javascript
复制
String test = Http.get(url + "/eds/api/v1/certificados").header("Authorization", "Basic " + Credentials).header("APIKey", APIKey).header("Accept", "application/json").text();

它们的行为方式是一样的,如果URL是HTTP,我可以获取数据,如果URL是HTTPS catch“失败的URL”。我已经使用SOAPui测试了REST服务,HTTPS服务器工作正常。

有什么建议,当我尝试在HTTPS上发送带有报头的GET时遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-03-24 02:32:32

我打算建议该站点的数字证书不是由Java JRE证书存储中包含的证书颁发机构签署的。

以下是您可以执行的操作:

  1. 使用浏览器浏览站点的证书,包括证书链,一直到本地安装的CA证书的根证书。

Java的文件是:

代码语言:javascript
复制
$JAVA_HOME/jre/lib/security/cacerts

您需要运行以下命令:

代码语言:javascript
复制
keytool  -list -keystore cacerts

当提示输入密码时,只需按Enter键。

如果您没有看到用于签署您站点的证书的CA的证书,则会出现此错误。

修复方法:

  1. 使用众所周知的CA为您的站点获取证书,并确保该证书已存在于您的Java cert数据库中。

或者:

  1. 使用浏览器从站点获取证书,并使用以下命令将其导入您的本地Java数据库:

keytool -importcert ...

有关keytool程序的详细信息,请执行以下操作:

代码语言:javascript
复制
 keytool --help
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49442519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档