微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Jersey 客户端通过 https 访问有效的 Oracle 页面?

如何解决如何使用 Jersey 客户端通过 https 访问有效的 Oracle 页面?

我惊讶地发现代码 ClientBuilder.newBuilder().connectTimeout(10,TimeUnit.SECONDS).readTimeout(10,TimeUnit.SECONDS).build().target("https://www.oracle.com/java/technologies/naming-conventions.html").request().get(); 使用 Jersey JAX-RS 客户端实现抛出“读取超时”异常。 (当我尝试 report this 时,有人告诉我这不是错误。)

我预计 Jersey 将使用认的 Java 信任库,并且认的 Java 信任库将包含允许信任 Oracle(和许多其他)网站的 CA 证书。

确实,运行 keytool -list -cacerts,我看到我的信任库包含 166 个证书。我想他们中的一些人允许验证 Oracle 的网站,但我不知道如何进行检查(好吧,除了我想对 Jersey 做的事情之外)。

我意识到我可以下载 Oracle 的证书并将其添加到我的信任库中,但我显然不想为我想使用 SSL 连接的每个经典网站都这样做。我更想了解在“正常”Java 安装中认应该信任哪些网站(是否有关于此的官方文档?);我如何检查我的特定安装是否存在阻止 Oracle 网站被信任的问题;或者,如果这是正常的,我是否可以一劳永逸地告诉 Java 信任认情况下 Firefox 或 Chromium 会信任的网站。

例如,

This answer 建议 OpenJdk(这是我使用的)认应该信任与 Firefox 相同的网站。 Firefox 显然信任 Oracle。

我错过了什么?

编辑我意识到指定我使用 Debian stable 似乎很重要,因为这个问题可能是特定于操作系统的。我想知道我的安装是否有问题。 “据我所知,每个发行版补丁 OpenJDK 都使用自己的列表,我想这就是为什么这个问题在 GNU/Linux 系统上没有得到太多关注的原因”——Andrew Haley on OpenJDK ML。 “Debian 有工具可以从系统的密钥库中创建 cacert 文件。每次系统的密钥库更改时,都有一个钩子系统更新 cacert。 lib/security/cacert 实际上是该文件的符号链接。 (...) 对于 Debian,它与 Mozilla 的列表相同。” -- aahlenst on GH Adoptium issue。确实:ls -l /usr/lib/jvm/default-java/lib/security/cacerts 表明它链接/etc/ssl/certs/java/cacerts

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。