J'essaie de configurer le transitaire logstash, mais j'ai des problèmes avec la création d'un canal sécurisé approprié. Essayer de configurer cela avec deux machines ubuntu (serveur 14.04) exécutées dans virtualbox. Ils sont 100% propres (fichier d'hôtes non touché ou installé d'autres packages autres que java, ngix, elastisearch, etc. requis pour logstash)
Je ne pense pas que ce soit un problème de logstash, mais une mauvaise gestion des certificats ou quelque chose de mal défini sur la machine logstash ubuntu ou le transitaire.
J'ai généré les clés:
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Ma conf d'entrée sur le serveur logstash:
input {
lumberjack {
port => 5000
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
Les clés ont été copiées sur l' hôte du redirecteur , qui a la configuration suivante.
{
"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" }
}
]
}
Avec le serveur logstash en cours d'exécution, je «sudo service logstash-forwarder start» sur la machine du transitaire, me donnant l'erreur répétée suivante:
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
Comme je l'ai mentionné plus tôt, je ne pense pas que ce soit un problème de logstash, mais un problème de configuration de certificat / machine. Le problème est que je n'arrive pas à le résoudre. Espérons que quelques esprits intelligents ici pourront m'aider?
Merci
openssl x509 -text
partir du certificat installé sur le serveur. Veuillez également vérifieropenssl s_client
que le serveur renvoie le certificat attendu et l'utiliser-CApath
avec s_client pour vérifier que la chaîne de confiance peut être vérifiée par rapport à l'autorité de certification configurée.Il existe un script pour créer des certificats appropriés pour le bûcheron qui a été mentionné sur un ticket github logstash: la négociation SSL échoue car les SAN IP sont manquants
Téléchargez le fichier:
curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go
...construit le:
..et courir:
la source
J'ai eu un vrai problème avec ça. Je n'utilise pas logstash, j'essayais simplement de faire fonctionner les SAN IP avec les dockers tls. Je créerais le certificat comme décrit dans l'article de docker sur https ( https://docs.docker.com/articles/https/ ), puis lorsque je me connecterais depuis un client docker:
J'obtiendrais cette erreur:
ce qui me rendait fou. J'avoue, je trébuche dans toutes les choses openssl, donc, tout le monde peut déjà savoir ce que j'ai découvert. L'exemple subjectAltName ici (et partout ailleurs) montre la mise à jour du fichier openssl.cnf. Je ne pouvais pas faire fonctionner ça. J'ai effectué une recherche sur le fichier openssl.cnf, je l'ai copié dans un répertoire local, puis j'y ai apporté les modifications. Lorsque j'ai examiné le certificat, il ne contenait pas l'extension:
La commande utilisée pour créer ce certificat est ici (à partir de l'article du docker):
Vous ne pouvez pas ajouter une ligne -config openssl.cnf à cette commande, elle n'est pas valide. Vous ne pouvez pas non plus copier le fichier openssl.cnf dans le répertoire actuel, le modifier et espérer le faire fonctionner de cette façon. Quelques lignes plus tard, j'ai remarqué que le certificat «client» utilise un -extfile extfile.cnf. J'ai donc essayé ceci:
et cela l'a corrigé. Donc, pour quelque raison que ce soit, ma version de openssl ne me permettait pas de modifier le fichier openssl.cnf, mais je pouvais spécifier subjectAltName comme ceci. Fonctionne très bien!
Vous pouvez spécifier n'importe quel nombre d'adresses IP, comme IP: 127.0.0.1, IP: 127.0.1.1 (non localhost également).
la source
Veuillez consulter la solution de @Steffen Ullrich ci-dessus pour la solution rapide.
Il y a aussi un problème / une discussion à ce sujet dans le github du projet logstash-forwarder . Voyez-le (bientôt, car les travaux sont en cours) pour une solution plus simple.
la source