CURL und Elasticsearch
Von Michael Wutzke, , aktualisiert
Wer sich von der Linux-Kommandozeile aus mit Elasticsearch verbinden will, kann dafür zum Beispiel CURL nutzen. Der Standardport von Elasticsearch ist Port 9200:
Elasticsearch lässt sich aber auch mit TLS und einem Zertifikat einrichten, und das sollte man auch. Das ist zum Beispiel der Fall, wenn Sie den offiziellen elastic-stack über Docker nutzen. Auch hier verwendet Elastic selbst signierte Zertifikate. Wenn Sie sich mit
docker exec -it elasticsearch /bin/bash
im Elasticsearch-Container anmelden, kommen Sie wegen der TLS-Verschlüsselung mit einem einfachen CURL-Befehl nicht weiter. Die Fehlermeldung
curl: (52) Empty reply from server
erklärt sich dann fast von selbst: Wir haben uns über http statt über https verbunden, denn dieser Docker-Container nutzt gesicherte TLS-Verbindungen. Stellen wir die Verbindung nun auf https um, kommt der nächste Fehler, und die Anmeldung bei Elasticsearch schlägt wieder fehl:
curl: (60) Peer’s Certificate issuer is not recognized.
Das Problem ist klar: Wir versuchen, eine sichere Verbindung aufzubauen, ohne den Elastic-Benutzernamen und einen Schlüssel anzugeben. Dafür gibt es zwei einfache Lösungen. Erstens können wir das Zertifikat lokal umgehen (nicht empfohlen, aber es funktioniert):
curl -u elastic:
Oder wir geben den Speicherort des Elasticsearch-Zertifikats an, das ist der empfohlene Weg:
curl -u elastic:
Hinweis: