2017-01-31 18 views
0

NifiフローのGetTwitterプロセッサを設定しようとしています。アクセストークンやコンシューマキーなどの必要なプロパティを設定しました。私は、プロセッサの電源を入れたときにしかし、私は次のエラーを取得する:Apache Nifi Twitter接続の問題

Received error CONNECTION_ERROR: sun.security.validator.validatorexception pkix path building failed sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Will attempt to reconnect 

だから、起こって証明書/セキュリティ上の問題のいくつかの並べ替えがあることはかなり明白です。どうすればこの問題を解決できますか?

EDIT:追加

答えて

1

はい、現在お使いのプロセッサは、それがhttps://www.twitter.comを特定する証明書を受け取ること(または実際のURLが何であれ)と言っているが、それが提示された証明書との間の完全なチェーンを構築することはできませんenter image description here opensslコマンドの出力既知のCA /信頼できる証明書。これは、デフォルトでは、NiFiは信頼できる証明書を知らないためです。

マシンがJava以外のTwitter証明書を検証できることを確認できますか?あなたはそうするように、このopensslコマンドを使用することができます。

$ openssl s_client -connect <host:port> -debug -state 

あなたはかなり長いですが含まれ、結果が表示されるはずです。重要な部分がある

SSL-Session: 
    Protocol : TLSv1.2 
    Cipher : ECDHE-RSA-AES128-GCM-SHA256 
    Session-ID: 7FD9B2...F2A0CD 
    Session-ID-ctx: 
    Master-Key: 5847F71...0C2599 
    Key-Arg : None 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    TLS session ticket lifetime hint: 129600 (seconds) 
    TLS session ticket: 
    0000 - 0a c4 e2 31 be 96 ac 47-87 a4 38 98 0f 39 cf 24 ...1...G..8..9.$ 
    ... 
    0090 - 14 c9 bd 6a d7 ca 01 6b-09 40 6a eb 5d e0 4e f5 [email protected]].N. 

    Start Time: 1485890791 
    Timeout : 300 (sec) 
    Verify return code: 0 (ok) 

depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA 
verify return:1 
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA 
verify return:1 
depth=0 C = US, ST = California, L = San Francisco, O = "Twitter, Inc.", OU = Twitter Security, CN = api.twitter.com 
verify return:1 
SSL_connect:SSLv3 read server certificate A 

、最終的にリターンコードの確認:0(ok)

これが成功した場合は、トラストストアで信頼できるとマークされた正しいCA証明書がJavaにあることを確認できます。ご使用のJavaおよびOSのバージョンに応じて、JREおよびca-certificatesパッケージ(on * nix)を更新する必要があります。私は以下の書いたもの

EDIT

GetHTTPInvokeHTTPプロセッサ、ないGetTwitterに適用されます。

あなたは$JRE_HOME/lib/security/cacertsトラストストア・ファイルを指すStandardSSLContextServiceでコントローラーサービスを(例えば、私のMac上で、それは/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/security/cacertsである)を設定、およびJKSトラストタイプトラストストアを設定することができますパスワードchangeit

デフォルトでこれを追加することについて議論しているan existing Jiraがありますが、その決定に賛否両論があります。

+0

あなたが書いたものがgetHTTPとInvokeHTTPにのみ適用される場合は、GetTwitterの問題をどのように解決するか知っていますか? @Andy – Danzo

+0

そのため、上記のデバッグ手順を追加しました。 's_client'コマンドの結果はどうでしたか? – Andy

+0

元の投稿を編集してスクリーンショットを追加しました。 @Andy – Danzo