APACHE NIFI调用HTTP来获取令牌问题

时间:2017-08-28 10:01:24

标签: ssl-certificate apache-nifi

我有一个带有3个节点的安全集群NIFI,配置了truststore.jks和keystore.jks

在我的invokeHTTP中,我为https设置了带有密钥库和信任的“StandardSSLContextService”。

因此,当我尝试使用invokeHTTP来获取令牌但是它失败并出现此错误:

sun.security.validator.ValidatorException: PKIX path building failed:      

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

感谢帮助

1 个答案:

答案 0 :(得分:5)

可以使用 truststore 配置StandardSSLContextService,它是一个Java KeyStore对象,其中包含TrustedCertEntry个对象的集合 - 每个对象都包含可信实体的公钥和证书信息。当Apache NiFi尝试通过HTTPS联系某个其他端点或服务时,它会评估收到的标识该服务的证书,并尝试验证该证书。如果端点证书未直接包含在信任库中,它将检查哪个证书签署了叶证书,并验证该证书。此过程继续向证书链继续,直到找到可信任的证书,或者没有证书。

您收到的错误消息表明链中的所有证书都无法验证。正如daggett所指出的,您可以手动将要验证的服务的证书导入自定义信任库。如果这是公共Internet上可用的服务并由通常受信任的证书颁发机构(CA)签名,您还可以将StandardSSLContextService指向Java提供的默认列表。 cacerts信任库是自动包含的,并且具有与现代浏览器类似的可信条目列表。它位于$JAVA_HOME/jre/lib/security/cacerts。您可以为您的操作系统和Java版本确定$JAVA_HOME的值。

  • 信任库文件名: /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/security/cacerts(示例)
  • 信任库密码: changeit(默认值)
  • 信任库类型: JKS