无法找到请求目标的有效认证路径从 URL 加载 RDF 时

问题描述

我正在尝试将 URL 中的一些三元组加载到 GraphDB 9.1.1 中。过去,我使用基于 Web 的 Workbench 或通过 rest/data/import/upload/<repository>/url 端点这样做没有任何问题。

一个示例网址是 https://bitbucket.org/uamsdbmi/dron/raw/master/dron-full.owl

当我今天尝试加载三元组时,我得到

sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到到请求目标的有效认证路径

我的笔记本电脑上运行着 GraphDB 9.5.0,可以从那里的 URL 加载三元组。我可能不一定实施了我的科学计算部门在他们的服务器上使用的所有相同的安全措施。

部分响应A'B的回答,企业服务器正在使用

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01,mixed mode)

我的笔记本电脑正在使用

openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01,mixed mode)

解决方法

sun.security.provider.certpath.SunCertPathBuilderException 通常是由于缺少中间 SSL 证书造成的:您可能需要使用 https://www.ssllabs.com/ssltest/analyze.html 交叉检查您的网址。

如果确实如此,您的选择是:

  1. 通过设置以下 JVM 选项启用自动中间证书下载(请参阅 https://security.stackexchange.com/a/168061):
    -Dcom.sun.security.enableAIAcaIssuers=true
  1. 手动下载丢失的公共证书,并使用 keytool 将它们添加到密钥库中(从旧笔记复制,您的里程可能会有所不同……),确保以 GraphDB 使用的 JRE 安装为目标:立>
     sudo $JAVA_HOME/bin/keytool \
        -import -alias "{your alias here}" -file {public certificate here}.crt \
        -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
,

我们的科学计算服务器会对无法识别的 URL 进行一些代理/过滤/重定向,因此与本地代理服务器关联的证书与下载源 (butbucket.com) 提供的证书之间确实存在不匹配

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...