2017-08-28 103 views
2

我得到了一个安全集群NIFI有3个节点,与truststore.jks配置和keystore.jksAPACHE NIFI invokeHTTP得到令牌的问题

在我invokeHTTP,我给自己定“StandardSSLContextService”与密钥存储和trustore为HTTPS 。

所以,当我试图使用invokeHTTP到工程时,我试图https://nifi:9443/nifi-api/controller/config

  • 但不工作获取令牌但它失败,出现此错误:

    sun.security.validator.ValidatorException: PKIX path building failed:  
    
    sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    
    每一个拥有可信实体的公开密钥和证书信息 -

    感谢帮助

+0

只需添加到您的truststore.jks的来自服务器“https:// auth_server”的公共证书。您可以使用浏览器导出公共证书链。并使用keytool导入到jks(java jdk) – daggett

回答

3

StandardSSLContextService可以用信任,这是一个Java KeyStore对象包含TrustedCertEntry对象的集合进行配置。当Apache NiFi尝试通过HTTPS联系其他终端或服务时,它会评估接收到的标识服务的证书并尝试验证该证书。如果端点证书没有直接包含在信任库中,它会检查哪个证书签署了叶证书并验证该证书。该过程继续沿着证书链继续,直到找到一个可信的证书或者没有证书。

您收到的错误消息是说明链中的证书都不能被验证。正如daggett指出的那样,您可以手动将要验证的服务的证书导入到自定义信任库中。如果这是公共互联网上提供的服务并且由一般可信的证书颁发机构(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
+0

使用keytool从chrome导出证书并生成truststore.jks,并在TrustSSore Filename属性的StandardSSLContextService中添加路径。 但我仍然收到相同的错误。不知道如何解决这个问题。 – user4321

+0

使用OpenSSL的s_client命令行工具来确保您从远程服务获取正确的证书,并且它包含完整的证书链。确保导入到信任库的内容。 '$ openssl s_client -connect -debug -state -showcerts' – Andy