OpenJDK 8(1.8.0_232)和某些HTTPS连接是否引起HTTP错误403的任何已知问题?

问题描述 投票:1回答:1

[当使用Java 1.8.0_232运行Saxon 9.9.1.6 HE时(java -version输出

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)

)和用于尝试访问java -cp 'C:\Program Files\Saxonica\Saxon9.9HE\saxon9he.jar' net.sf.saxon.Query -t .\harry-potter-api-ex1.xq的XQuery程序的命令行https://www.potterapi.com/v1/sortingHat我总是会收到错误FOUT1170: Server returned HTTP response code: 403 for URL: https://www.potterapi.com/v1/sortingHat

正在运行Java 12.0.1(java -version输出

openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode)

]在具有相同Saxon版本的同一台计算机上,查询始终有效/能够进行HTTPS访问。

Java 8 / 1.8是否存在任何已知问题可能导致此问题?使用Oracle JRE 1.8的任何人都会遇到相同的错误吗?

XQuery文件是

declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
declare namespace array = "http://www.w3.org/2005/xpath-functions/array";

declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";

declare option output:method 'json';
declare option output:indent 'yes';


json-doc('https://www.potterapi.com/v1/sortingHat')

我已经使用Saxon和Java 8 / 1.8测试了一些其他HTTPS连接,并且它们确实起作用,但是对于给定的URL,我总是会在Java 8 / 1.8中收到错误,而在Java 12中没有错误。

使用Java 8运行时,[BaseX还给了我[FOUT1170] Resource 'https://www.potterapi.com/v1/sortingHat' cannot be retrieved.,并使用Java 12运行了查询。

我现在也尝试了一些Java代码

    System.out.println(System.getProperty("java.version"));

    URL url = new URL("https://www.potterapi.com/v1/sortingHat");

    HttpURLConnection con = (HttpURLConnection)url.openConnection();

    try {
        con.connect();
        System.out.println(con.getResponseCode());
    }
    finally {
        con.disconnect();
    }

输出为

1.8.0_232
403

对于Java 1.8和

12.0.1
200

任何想法会导致Java 1.8 / 8的403吗?

java xquery saxon basex
1个回答
4
投票

这是证书/ CA信任问题。

[如果您检查https://www.potterapi.com/v1/sortingHat的证书(例如,通过在浏览器中打开URL并单击挂锁图标),则会发现它是由COMODO ECC Domain Validation Secure Server CA 2颁发的。

[下一步,如果您检查JEP 319: Root Certificates的内容,您会发现Comodo(和其他CA)已作为Java 10的一部分添加到OpenJDK。因此,由于Java 8等较旧的Java版本中没有Comodo CA,其证书链,服务器(在此示例中为potterapi)将在TLS握手期间拒绝它,并以403-禁止响应。

© www.soinside.com 2019 - 2024. All rights reserved.