Estoy tratando de configurar logstash forwarder, pero tengo problemas para hacer un canal seguro adecuado. Intentando configurar esto con dos máquinas ubuntu (servidor 14.04) que se ejecutan en virtualbox. Están 100% limpios (no se tocó el archivo de hosts ni se instaló ningún otro paquete que no sea java, ngix, elastisearch, etc., necesarios para logstash)
No creo que este sea un problema de logstash, pero el manejo incorrecto de los certificados o algo no configurado correctamente en el logstash ubuntu o la máquina de reenvío.
Genere las claves:
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Mi entrada conf en el servidor 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"
}
}
Las claves se copiaron al host del reenviador , que tiene la siguiente configuración.
{
"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" }
}
]
}
Con el servidor logstash ejecutándose, 'sudo service logstash-forwarder start' en la máquina del reenviador, dándome el siguiente error repetido:
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
Como mencioné anteriormente, no creo que este sea un problema de logstash, sino un problema de configuración de máquina / certificado. El problema es que parece que no puedo resolverlo. ¿Espero que algunas mentes inteligentes aquí puedan ayudarme?
Gracias
openssl x509 -text
del certificado instalado en el servidor. Verifique tambiénopenssl s_client
que el servidor devuelva el certificado esperado y utilícelo-CApath
con s_client para verificar que la cadena de confianza se pueda verificar con la CA configurada.Hay un script para crear certs adecuados para el leñador que se mencionó en un ticket logstash github: el protocolo de enlace SSL falla porque faltan IP SAN
Descargar el archivo:
curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go
...constrúyelo:
..y correr:
fuente
Tuve un problema real con esto. No estoy usando logstash, simplemente estaba tratando de hacer que las SAN IP funcionen con docker tls. Crearía el certificado como se describe en el artículo de la ventana acoplable en https ( https://docs.docker.com/articles/https/ ), y luego cuando me conectaría desde un cliente de la ventana acoplable:
Me daría este error:
lo que me estaba volviendo loco. Lo admito, me tropiezo en todas las cosas de manera abierta, por lo tanto, todos pueden saber lo que descubrí. El ejemplo subjectAltName aquí (y en todas partes) muestra la actualización del archivo openssl.cnf. No pude hacer que eso funcione. Hice una localización en el openssl.cnf, lo copié a un directorio local y luego le hice los cambios. Cuando examiné el certificado, no contenía la extensión:
El comando que se usa para crear ese certificado está aquí (del artículo de Docker):
No puede agregar una línea -config openssl.cnf a este comando, no es válida. Tampoco puede copiar el archivo openssl.cnf en el directorio actual, modificarlo y esperar que funcione de esa manera. Unas líneas más tarde noté que el certificado de 'cliente' usa un archivo -extfile extfile.cnf. Entonces, probé esto:
Y eso lo arregló. Entonces, por alguna razón, mi versión de openssl no me permitía modificar el archivo openssl.cnf, pero podría especificar el subjectAltName de esta manera. ¡Funciona genial!
Puede especificar cualquier número de direcciones IP, como IP: 127.0.0.1, IP: 127.0.1.1 (también no localhost).
fuente
Consulte la solución de @Steffen Ullrich arriba para la solución rápida.
También hay un problema / una discusión al respecto en el github del proyecto logstash-forwarder . Véalo (pronto, ya que actualmente se está trabajando en ello) para una solución más fácil.
fuente