0

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

这是我的代码:

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());

也试过了

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,则捕获“失败的 URL”。我已经用 SOAPui 测试了 REST 服务,并且 HTTPS 服务器工作正常。

尝试在带有标头的 HTTPS 上发送 GET 时我缺少什么建议?

4

1 回答 1

0

我将建议该站点的数字证书未由 Java JRE 证书存储中包含的证书颁发机构签名。

这是您可以执行的操作:

  1. 使用浏览器浏览网站的证书,包括证书链,一直到根证书颁发机构
  2. 探索本地安装了哪些 CA 证书。

Java的文件是:

$JAVA_HOME/jre/lib/security/cacerts

你需要运行这个命令:

keytool  -list -keystore cacerts

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

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

怎么修:

  1. 使用知名 CA 为您的站点获取证书,并确保它已经存在于您的 Java 证书数据库中。

或者:

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

    密钥工具-importcert ...

有关该keytool计划的更多信息:

 keytool --help
于 2018-03-23T18:32:31.603 回答