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

unable to find valid certification path to requested target (when loading RDF from URL)

我正在尝试将 URL 中的一些三元组加载到 GraphDB 9.1.1 中。我过去曾使用基于网络的 Workbench 或通过 rest/data/import/upload/<repository>/url 端点完成此操作,没有任何问题。

一个例子 URL 是 https://bitbucket.org/uamsdbmi/dron/raw/master/dron-full.owl

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

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我的笔记本电脑上有 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.

交叉检查您的 URL

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

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

我们的科学计算服务器做了一些 proxying/filtering/redirection 无法识别的 URL,因此与本地代理服务器关联的证书与下载源 (butbucket.com) 提供的证书确实不匹配