Elasticsearch (enaio 11.10)

Elasticsearch (enaio 11.10)

Obwohl es möglich ist, Knotenzertifikate mit Standard-OpenSSL-Befehlen zu erstellen, wird für maximale Kompatibilität empfohlen, das native Elasticsearch-Tooling in Kombination mit dem benutzerdefinierten CA-Stammzertifikat (entweder CustomRootCAWithKey.p12 oder ein vom Kunden bereitgestelltes) zu verwenden. 

Da es zum Signieren der restlichen Elasticsearch-Zertifikate und nicht nur zur Überprüfung der Gültigkeit verwendet wird, ist zu beachten, dass die verwendete .p12-Datei sowohl das benutzerdefinierte CA-Stammzertifikat als auch dessen privaten Schlüssel enthalten muss. Wenn Sie den Anweisungen aus Schritt 1 auf der Seite Beispiele für die Erstellung der selbstsignierten Zertifikate befolgen, dann ist das die Datei CustomRootCAWithKey.p12.
Alternativ kann wie bei anderen Diensten auch das vom Kunden bereitgestellte benutzerdefinierte CA-Stammzertifikat verwendet werden.

Eine ausführliche Anleitung finden Sie unter https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-basic-setup.html und https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-basic-setup-https.html

Die meisten der benötigten Einstellungen für Elasticsearch werden durch das Installationsprogramm von enaio® automatisch konfiguriert. Stellen Sie jedoch sicher, dass Sie diese überprüfen und ggf. anpassen.

Knotenzertifikate erstellen

Es gibt zwei separate Schichten, die gesichert werden müssen: Transportschicht und HTTP-Schicht

Transportschicht

Die Transportschicht wird für die interne Kommunikation zwischen den Knoten eines Clusters verwendet. Gehen Sie auf jedem Knoten zu dem Ordner, in dem Elasticsearch installiert wurde, und erzeugen Sie ein Zertifikat und einen privaten Schlüssel für die Knoten in Ihrem Cluster. Fügen Sie das benutzerdefinierte CA-Stammzertifikat ein (z. B. CustomRootCAWithKey.p12).

./bin/elasticsearch-certutil cert --ca <fullpath>\CustomRootCAWithKey.p12

Wenn Sie dazu aufgefordert werden, erstellen Sie ein Passwort für das Zertifikat und akzeptieren Sie den Standarddateinamen. Die Ausgabedatei ist ein KeyStore namens elastic-certificates.p12.
Diese Datei enthält ein Knotenzertifikat (mit X509v3 Extended Key Usage): TLS-Web-Server-Authentifizierung, TLS-Web-Client-Authentifizierung, Knotenschlüssel und CA-Zertifikat (das bereitgestellte benutzerdefinierte CA-Stammzertifikat).

HTTP-Schicht

Die Aktivierung von SSL in der HTTP-Schicht bietet eine zusätzliche Sicherheitsebene, die sicherstellt, dass die gesamte Kommunikation vom und zum Cluster verschlüsselt ist.

./bin/elasticsearch-certutil http

Folgen Sie den Anweisungen auf dem Bildschirm. Um das benutzerdefinierte CA-Stammzertifikat zu verwenden:

  • Antworten Sie mit "N", wenn Sie gefragt werden, ob Sie eine CSR erstellen möchten.

  • Geben Sie dann den Speicherort des vollständigen benutzerdefinierten Stammzertifikats an (z. B. CustomRootCAWithKey.p12).

  • Wenn Sie gefragt werden, ob Sie ein Zertifikat pro Knoten erstellen möchten, können Sie durch die Antwort "N" ein Wildcard-Zertifikat für alle Knoten erstellen.

Die vom Dienstprogramm elastic-search-certutil erstellten Zertifikate werden standardmäßig im Stammverzeichnis von Elasticsearch gespeichert. Die Datei elastic-certificates.p12 kann direkt im Ordner gefunden werden, während die Datei http.p12 sich in der Datei elasticsearch-ssl-http.zip im Unterordner /elasticsearch befindet.

Knotenkonfiguration aktualisieren

Kopieren Sie die Dateien elastic-certificates.p12 und https.p12 in das Verzeichnis $ES_PATH_CONF auf jedem Knoten in Ihrem Cluster.
Öffnen Sie die Datei $ES_PATH_CONF/elasticsearch.yml und nehmen Sie die folgenden Änderungen vor:

$ES_PATH_CONF/elasticsearch.yml

xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: http.p12 xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.client_authentication: required xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

Wenn der Hostname verifiziert werden soll, setzen Sie xpack.security.transport.ssl.verification_mode auf full.
In diesem Fall sollten Sie für jeden Host (Knoten), der mit der DNS- oder IP-Adresse übereinstimmt, ein anderes Zertifikat erstellen.

Um die Passwortkonfiguration zu registrieren, auch wenn Sie beim Erstellen der Node-Transport- und HTTP-Zertifikate leere Passwörter verwendet haben, führen Sie die folgenden Befehle aus, um die Einträge im Elasticsearch-KeyStore zu erstellen:

./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password ./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password ./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

Vorgang für alle Knoten des Clusters wiederholen

Führen Sie den vorherigen Schritt für jeden Knoten in Ihrem Cluster aus.
Führen Sie auf jedem Knoten in Ihrem Cluster einen Neustart von Elasticsearch aus. Vergewissern Sie sich, dass das Cluster korrekt hochgefahren ist und sich im grünen Bereich befindet.

application-es.yml aktualisieren

Die folgenden Änderungen sollten in der application-es.yml in den Instanzen von enaio® service-manager vorgenommen werden, auf denen die Services search, index und consistency-check ausgeführt werden.

application-es.yml

elasticsearch.hosts: https://<FQDN>:8041 elasticsearch.port: 9300 elasticsearch.cluster.name: enaioblue-fts elasticsearch.user: elastic elasticsearch.pwd: <password>

Parameter

Beschreibung

Parameter

Beschreibung

elasticsearch.hosts

Stellen Sie sicher, dass der Parameter elasticsearch.hosts auf einen korrekten Masterknoten zeigt und dass die Adresse mit https beginnt.

elasticsearch.pwd

Sollte so belassen werden, wie vom Installer vorgesehen.

Nach den Anpassungen in den Konfigurationsdateien muss enaio® service-manager neu gestartet werden.