2017-08-28 1 views
2

I mit 3 Knoten einen sicheren Cluster Nifi bekam, konfiguriert mit truststore.jks und keystore.jksAPACHE Nifi invokeHTTP Token Problem zu erhalten

In meinem invokeHTTP, habe ich gesetzt "StandardSSLContextService" mit Schlüsselspeicher und TruStore für https .

Also, wenn ich Verwendung invokeHTTP zu bin versucht, Get Token, aber es ist mit diesem Fehler fehlgeschlagen:

Dank für

+0

zu Ihrem truststore.jks fügen Sie einfach die öffentliches Zertifikat vom Server "https: // auth_server". Sie können die öffentliche Zertifikatskette mit dem Browser exportieren. und importieren in jks mit keytool (java jdk) – daggett

Antwort

3

Die StandardSSLContextService hilft mit einem -Vertrauens, so konfiguriert werden, die eine Java KeyStore Objekt ist, das eine Sammlung von TrustedCertEntry Objekte enthält - von denen jeder den öffentlichen Schlüssel und Zertifikatsinformationen von einer vertrauenswürdigen Instanz hält. Wenn Apache NiFi versucht, einen anderen Endpunkt oder Dienst über HTTPS zu kontaktieren, wertet es das empfangene Zertifikat aus, das den Dienst identifiziert, und versucht, dieses Zertifikat zu überprüfen. Wenn das Endpunktzertifikat nicht direkt im Truststore enthalten ist, überprüft es, welches Zertifikat das Blatt-Zertifikat signiert hat, und validiert dieses. Dieser Prozess setzt die Zertifikatskette fort, bis entweder ein Zertifikat gefunden wird, das vertrauenswürdig ist, oder keines.

Die Fehlermeldung, die Sie erhalten, besagt, dass keines der Zertifikate in der Kette verifiziert werden konnte. Wie daggett darauf hingewiesen hat, könnten Sie das Zertifikat des Dienstes, den Sie validieren möchten, manuell in einen benutzerdefinierten Truststore importieren. Wenn dies ein Dienst ist, der im öffentlichen Internet verfügbar ist und von einer allgemein vertrauenswürdigen Zertifizierungsstelle (CA) signiert wurde, können Sie auch Ihre StandardSSLContextService auf die von Java bereitgestellte Standardliste verweisen. Der Truststore cacerts ist automatisch enthalten und hat eine ähnliche vertrauenswürdige Eintragsliste für moderne Browser. Es ist in $JAVA_HOME/jre/lib/security/cacerts gefunden. Sie können den Wert $JAVA_HOME für Ihre Betriebssystem- und Java-Version festlegen.

  • Truststor Dateiname:/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/security/cacerts (Beispiel)
  • Truststor Passwort:changeit (Standardwert)
  • Truststore-Typ:JKS
+0

Exportiert das Zertifikat von Chrome und generierte Truststore.jks mit dem Keytool und fügte den Pfad im StandardSSLContextService für die Eigenschaft Truststore Dateiname hinzu. Aber ich bekomme immer noch den gleichen Fehler. Ich bin mir nicht sicher, wie ich das Problem lösen könnte. – user4321

+0

Verwenden Sie das Befehlszeilentool s_client von OpenSSL, um sicherzustellen, dass Sie das richtige Zertifikat vom Remote-Dienst erhalten und dass es die vollständige Zertifikatskette enthält. Stellen Sie sicher, dass dies in den Truststore importiert wird. '$ openssl s_client -connect -debug -status -showcerts' – Andy