2017-08-28 104 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