Ich versuche, die Logstash-Weiterleitung einzurichten, habe jedoch Probleme, einen ordnungsgemäßen sicheren Kanal einzurichten. Der Versuch, dies mit zwei Ubuntu-Computern (Server 14.04) zu konfigurieren, die in virtualbox ausgeführt werden. Sie sind zu 100% sauber (keine Hosts-Datei berührt oder andere Pakete als die erforderlichen Java-, NGIX-, Elastisearch- usw. für Logstash installiert).
Ich glaube nicht, dass dies ein Logstash-Problem ist, aber eine unsachgemäße Behandlung von Zertifikaten oder etwas, das weder auf dem Logstash-Ubuntu- noch auf dem Weiterleitungscomputer korrekt eingestellt ist.
Ich habe die Schlüssel generiert:
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Meine Eingabe auf dem Logstash-Server:
input {
lumberjack {
port => 5000
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
Die Schlüssel wurden auf den Weiterleitungshost kopiert , der die folgende Konfiguration aufweist.
{
"network": {
"servers": [ "192.168.2.107:5000" ],
"timeout": 15,
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
"ssl key": "/etc/pki/tls/certs/logstash-forwarder.key"
},
"files": [
{
"paths": [
"/var/log/syslog",
"/var/log/auth.log"
],
"fields": { "type": "syslog" }
}
]
}
Wenn der Logstash-Server ausgeführt wird, wird auf dem Weiterleitungscomputer "sudo service logstash-forwarder start" ausgeführt , und es wird der folgende wiederholte Fehler angezeigt :
Jul 9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.589762 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul 9 05:06:21 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:21.595105 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs
Jul 9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.595971 Connecting to [192.168.2.107]:5000 (192.168.2.107)
Jul 9 05:06:22 ubuntu logstash-forwarder[1374]: 2014/07/09 05:06:22.602024 Failed to tls handshake with 192.168.2.107 x509: cannot validate certificate for 192.168.2.107 because it doesn't contain any IP SANs
Wie bereits erwähnt, handelt es sich meines Erachtens nicht um ein Logstash-Problem, sondern um ein Problem mit der Zertifikat- / Computerkonfiguration. Das Problem ist, ich kann es scheinbar nicht lösen. Hoffentlich können einige kluge Köpfe hier mir helfen?
Vielen Dank
openssl x509 -text
aus dem auf dem Server installierten Zertifikat. Bitte überprüfen Sie auch,openssl s_client
dass der Server das erwartete Zertifikat zurückgibt und verwenden Sie-CApath
s_client, um zu überprüfen, ob die Vertrauenskette mit der konfigurierten Zertifizierungsstelle verifiziert werden kann.Es gibt ein Skript zum Erstellen der richtigen Zertifikate für Holzfäller, das auf einem Logstash-Github-Ticket erwähnt wurde: SSL-Handshake schlägt fehl, weil IP-SANs fehlen
Laden Sie die Datei herunter:
curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go
...baue es:
..und Renn:
quelle
Ich hatte ein echtes Problem damit. Ich verwende kein Logstash. Ich habe lediglich versucht, IP-SANs für die Arbeit mit Docker-TLs zu aktivieren. Ich würde das Zertifikat wie im Docker-Artikel unter https ( https://docs.docker.com/articles/https/ ) beschrieben erstellen und dann, wenn ich eine Verbindung von einem Docker-Client aus herstellen würde:
Ich würde diesen Fehler bekommen:
Das hat mich verrückt gemacht. Ich gebe zu, ich stolpere in allen Dingen herum, also könnte jeder schon wissen, was ich entdeckt habe. Das subjectAltName-Beispiel hier (und an allen anderen Stellen) zeigt, wie die openssl.cnf-Datei aktualisiert wird. Ich konnte das nicht zum Laufen bringen. Ich habe eine Suche in der Datei openssl.cnf durchgeführt, sie in ein lokales Verzeichnis kopiert und dann die Änderungen vorgenommen. Als ich das Zertifikat untersuchte, enthielt es nicht die Erweiterung:
Der Befehl zum Erstellen dieses Zertifikats lautet hier (aus dem Docker-Artikel):
Sie können diesem Befehl keine -config openssl.cnf-Zeile hinzufügen, sie ist ungültig. Sie können die Datei openssl.cnf auch nicht in das aktuelle Verzeichnis kopieren, ändern und hoffen, dass sie so funktioniert. Ein paar Zeilen später bemerkte ich, dass das 'Client'-Zertifikat eine -extfile extfile.cnf verwendet. Also habe ich Folgendes versucht:
und das hat es behoben. Aus irgendeinem Grund erlaubte mir meine Version von openssl nicht, die Datei openssl.cnf zu ändern, aber ich konnte den subjectAltName so angeben. Funktioniert super!
Sie können eine beliebige Anzahl von IP-Adressen angeben, z. B. IP: 127.0.0.1, IP: 127.0.1.1 (auch nicht localhost).
quelle
Weitere Informationen zur schnellen Fehlerbehebung finden Sie oben in der Lösung von @Steffen Ullrich.
Es gibt auch ein Problem / eine Diskussion darüber im Github des Logstash-Forwarder-Projekts . Sehen Sie es sich an (in Kürze wird daran gearbeitet), um eine einfachere Lösung zu finden.
quelle