Falha de handshake SSL ao usar o Logstash

2

Estou usando o Logstash , e ele funciona na maioria das máquinas em execução. Mas em alguns, eu recebo este erro:

Failed to tls handshake with x.x.x.x x509: certificate is valid for , not dns_name

Eu li no blog de alguém, que eles corrigiram assim:

Turned out to be my self-gen cert ;-P I created a new one, using properly filled out openssl.cnf and a wildcard domain.

Mas eles não colocaram as etapas que usaram para fazer o acima. Alguém poderia me dizer como criar um certificado autoassinado com o domínio curinga? E o que significa preencher corretamente o openssl.cnf .

    
por girlcoder 22.10.2014 / 13:38

1 resposta

0

Se você estiver definindo conexões por meio do nome do host - em vez do endereço IP - parece que está lendo a questão aqui que o problema é que o Logstash agora exige que o certificado SSL para o host tenha um nome CN (nome comum), além de gerar o SSL sem o sinalizador -batch no local:

Figured out the issue - looks like you need to generate the SSL certificate differently now. It must include the 'common name' (i.e. your servers hostname). In my case, I just dropped the -batch flag when generating the certificate causing openssl to ask me for the hostname.

O comando seria algo assim na linha de comando de qualquer máquina com o OpenSSL instalado:

openssl req -x509 -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt

O logstash-forwarder.key e logstash-forwarder.crt podem ser alterados para corresponder ao seu nome de host, se desejar. Quando você executar esse comando, você verá algo assim:

Generating a 2048 bit RSA private key
.............................................+++
..........+++
unable to write 'random state'
writing new private key to 'logstash-forwarder.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:Brooklyn
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Some Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:my_hostname.local
Email Address []:

E o que eu digitei para este exemplo foi o seguinte; o item mais importante é o "Nome Comum" (CN)

  • Nome do país: EUA
  • Estado ou nome da província: Nova York
  • Nome da localidade: Brooklyn
  • Nome da organização: Alguma empresa
  • Nome da Unidade Organizacional: [Deixei isso em branco de propósito.]
  • Nome comum: my_hostname.local
  • Endereço de e-mail: [Deixei isso em branco de propósito.]

Eu pessoalmente gosto de digitar o nome do país, estado & nome da localidade, uma vez que me ajuda a classificar essas coisas, mas essas são realmente apenas a cereja no topo do bolo. O "bolo" em si é o nome do host: my_hostname.local .

Agora, essa solução funciona para conexões feitas por meio do nome do host. Se a máquina com a qual você tem um problema não tiver um nome de host, ele deverá ser configurado. Ou talvez devesse ser definido no arquivo /etc/hosts na máquina de conexão para, pelo menos, "enganar" a configuração para usar um nome de host.

Um usuário nesse relatório de problemas postou um script legal para criar um certificado autoassinado para uso do endereço IP, que é localizado aqui , mas deve haver uma maneira de lidar com isso diretamente na linha de comando também. E olhando para este site, parece que o problema é como configurar solicitações SSL com SubjectAltName ao usar o OpenSSL.

    
por 22.10.2014 / 14:06

Tags