Estou tentando configurar o encaminhador de logstash, mas tenho problemas ao criar um canal seguro adequado. Tentando configurar isso com duas máquinas ubuntu (server 14.04) em execução no virtualbox. Eles são 100% limpos (o arquivo hosts não tocado ou instalou outros pacotes além do java, ngix, elastisearch, etc, necessários para o logstash)
Eu não acredito que este seja um problema de logstash, mas o tratamento inadequado de certificados ou algo não definido como correto no logstash ubuntu ou na máquina de encaminhamento.
Eu gerei as chaves:
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Minha entrada conf no 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"
}
}
As chaves foram copiadas para o host do encaminhador , que possui a seguinte configuração.
{
"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" }
}
]
}
Com o servidor logstash em execução, eu 'sudo service logstash-forwarder start' na máquina do encaminhador, fornecendo o seguinte erro 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 mencionei anteriormente, não acredito que seja um problema de logstash, mas um problema de configuração de certificado / máquina. O problema é que não consigo resolvê-lo. Espero que algumas mentes inteligentes aqui possam me ajudar?
obrigado
openssl x509 -text
partir do certificado instalado no servidor. Verifique também seopenssl s_client
o servidor retorna o certificado esperado e use-CApath
com s_client para verificar se a cadeia confiável pode ser verificada na CA configurada.Há um script para a criação de certificados adequados para o lenhador mencionado em um ticket do github do logstash: O handshake do SSL falha porque as SANs IP estão ausentes
Faça o download do arquivo:
curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go
...construa:
..e corra:
fonte
Eu tive um problema real com isso. Não estou usando o logstash, estava simplesmente tentando fazer com que as SANs IP funcionassem com o docker tls. Eu criaria o certificado, conforme descrito no artigo da janela de encaixe em https ( https://docs.docker.com/articles/https/ ), quando eu me conectaria a partir de um cliente de janela de encaixe:
Eu receberia este erro:
o que estava me deixando louco. Eu admito, eu tropeço em todas as coisas abertas, então todo mundo já deve saber o que eu descobri. O exemplo subjectAltName aqui (e em qualquer outro lugar) mostra a atualização do arquivo openssl.cnf. Eu não consegui fazer isso funcionar. Fiz uma localização no openssl.cnf, copiei-o para um diretório local e fiz as alterações nele. Quando examinei o certificado, ele não continha a extensão:
O comando que está sendo usado para criar esse certificado está aqui (no artigo da janela de encaixe):
Você não pode adicionar uma linha -config openssl.cnf a este comando, ela não é válida. Nem você pode copiar o arquivo openssl.cnf para o diretório atual, modificá-lo e esperar que ele funcione dessa maneira. Algumas linhas depois, notei que o certificado 'client' usa um -extfile extfile.cnf. Então, eu tentei isso:
e isso consertou. Portanto, por qualquer motivo, minha versão do openssl não estava me permitindo modificar o arquivo openssl.cnf, mas eu poderia especificar o subjectAltName dessa maneira. Funciona bem!
Você pode especificar qualquer número de endereços IP, como IP: 127.0.0.1, IP: 127.0.1.1 (também não localhost).
fonte
Consulte a solução de @Steffen Ullrich acima para obter a solução rápida.
Há também uma questão / discussão sobre isso no github do projeto logstash-forwarder . Veja (em breve, como o trabalho atualmente está em andamento) para uma solução mais fácil.
fonte