Konfigurieren eines Fusion JDBC Connectors mit SSL
Immer häufiger implementieren Datenbankadministratoren Sicherheitsmaßnahmen, die über einen einfachen Benutzernamen und ein Passwort hinausgehen. Ein Beispiel ist die Verwendung von SSL mit Zertifikaten und Schlüsseldateien, um eine verschlüsselte Kommunikation zwischen Client und Server zu gewährleisten. Die Einrichtung eines neuen Connectors in Lucidworks Fusion, der diese Verschlüsselungsmethode verwendet, ist einfach, wenn auch nicht ganz unkompliziert. Im Folgenden beschreibe ich, wie ich einen JDBC-Konnektor als Client zu einer MySQL-Datenbank (mit MySQL JDBC JAR v5.1.31, Link am Ende) unter Verwendung von SSL und einem privaten Schlüssel konfiguriert habe.
Voraussetzung: Konfigurieren eines Java KeyStore (JKS)
Bevor wir eine Verbindung zu MySQL herstellen können, müssen wir einen Java KeyStore auf dem/den Fusion-Server(n) einrichten, auf dem/denen Ihre Konnektoren liegen. Dies ist der schwierigste Aspekt bei der Konfiguration eines Konnektors für SSL und geschieht außerhalb von Fusion. Wenn Sie ein Paar öffentlicher/privater Schlüssel haben, müssen Sie einen neuen Java KeyStore erstellen (oder in einen bestehenden importieren). Ihr Datenbankadministrator muss Ihnen den entsprechenden öffentlichen Schlüssel zur Verfügung stellen und kann Ihnen einen privaten Schlüssel zur Verfügung stellen oder auch nicht (möglicherweise müssen Sie diesen selbst generieren). Da die Erstellung eines JKS ein eigener Blogbeitrag ist, gebe ich am Ende dieses Beispiels einige Ressourcen an, die Ihnen die richtige Richtung weisen.
Zeigen Sie Fusion auf Ihr JKS
Der erste Schritt bei der Konfiguration dieses Connectors besteht darin, sicherzustellen, dass Fusion einen Zugriff auf Ihren JKS hat. Dazu müssen Sie das Startskript des Konnektors (<Fusion home>/bin/connectors
unter *nix oder <Fusion home>/bin/connectors.cmd
unter Windows) so ändern, dass es die folgenden Java-Optionen enthält:
-Djavax.net.ssl.keyStore=/path/to/keystore
-Djavax.net.ssl.keyStorePassword=password
Im *nix-Skript können Sie diese Optionen zu der bereits definierten Variable JAVA_OPTIONS
hinzufügen. In der Windows-Batchdatei gibt es mehrere Bedingungen, die JAVA_OPTIONS
anders setzen, also fügen Sie sie am besten dem Befehl START
im Block :do_start
hinzu.
Konfigurieren Ihres JDBC-Connectors
Sobald Ihr JKS eingerichtet ist und Fusion weiß, wo es zu finden ist, können wir einen neuen JDBC-Connector erstellen, der SSL verwendet. Wie ich bereits erwähnt habe, verwenden wir in diesem Beispiel MySQL. Meine Connector-URL und mein Treiber lauten daher wie folgt:
URL: jdbc:mysql://<server_name>:<port>/<db_name>?useSSL=true
Driver: org.gjt.mm.mysql.Driver
Eine kurze Anmerkung: Sie werden feststellen, dass die einzige Änderung gegenüber der grundlegenden MySQL-Verbindungszeichenfolge das Hinzufügen des useSSL-Flags ist – so einfach ist das. Sie werden auch feststellen, dass ich die „ältere“ MySQL JDBC-Treiberklasse verwende; die Verwendung von „com.mysql.jdbc.Driver“ führte zu „value.not.allowed“-Ausnahmen. Ich habe einige Ressourcen hinzugefügt, die den Unterschied zwischen diesen Klassen erläutern.
Und das war’s! Nicht gerade einfach, aber auch nicht schwierig. Wie ich bereits erwähnt habe, ist der schwierigste Teil für die meisten Leute die Konfiguration des JKS. Hier finden Sie einige weitere Ressourcen, die Ihnen bei der Verwendung von JKS und MySQL mit SSL helfen können.
Ressourcen
- Java KeyTool: das Kommandozeilenprogramm zum Erstellen und Aktualisieren von Schlüsselspeichern und Truststores
- KeyStore Explorer: eine kostenlose, plattformübergreifende Benutzeroberfläche für Keystores und Truststores, die die Einrichtung erheblich erleichtert
- Importieren eines Paares aus privatem Schlüssel und öffentlichem Zertifikat
- MySQL JDBC-Treiber
- MySQL und SSL: Einige Artikel von MySQL zur SSL-Konfiguration auf Client- und Serverseite:
- Was ist der Unterschied zwischen com.mysql.jdbc.Driver und org.gjt.mm.mysql.Driver?
Über den Autor
Sean Mare ist ein Technologe mit über 18 Jahren Erfahrung in der Konzeption und Entwicklung von Unternehmensanwendungen. Als Solution Architect bei der Knowledgent Group Inc., einem führenden Beratungsunternehmen für Big Data und Analytik und Partner von Lucidworks, nutzt er die Möglichkeiten der Unternehmenssuche, um Menschen und Organisationen zu ermöglichen, ihre Daten auf spannende und interessante Weise zu erforschen. Er wohnt im Großraum New York City.