2

Я использую Logstash, и он работает на большинстве машин, которые у меня работают. Но на некоторых я получаю эту ошибку:

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

Я читал в чьем-то блоге, что они исправили это так:

Оказалось, что это мой личный сертификат; -PI создал новый, используя правильно заполненный файл openssl.cnf и домен подстановочного знака.

Но они не поместили шаги, которые они использовали, чтобы сделать выше. Может кто-нибудь сказать, пожалуйста, как создать самозаверяющий сертификат с подстановочным доменом? А что значит правильно заполнить openssl.cnf .

1 ответ1

0

Если установка соединения через имя хоста-вместо IP - адреса, кажется , от чтения на вопрос здесь , что проблема Logstash теперь требует сертификат SSL для хоста , чтобы иметь CN (общее название) набор, а также генерации SSL без -batch флага:

Разобрался с проблемой - похоже, теперь нужно генерировать SSL-сертификат по-другому. Он должен включать «общее имя» (т. Е. Имя хоста вашего сервера). В моем случае я просто сбросил флаг -batch при генерации сертификата, в результате чего openssl запросил у меня имя хоста.

Команда будет выглядеть примерно так из командной строки любого компьютера с установленным OpenSSL:

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

logstash-forwarder.key и logstash-forwarder.crt могут быть изменены, чтобы соответствовать вашему имени хоста, если вы хотите. Когда вы выполните эту команду, вы увидите что-то вроде этого:

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 []:

И то, что я ввел для этого примера, было следующим; самый важный пункт - «Общее имя» (CN)

  • Название страны: США
  • Название штата или провинции: Нью-Йорк
  • Название населенного пункта: Brooklyn
  • Название организации: Некоторая компания
  • Название подразделения организации: [Я специально оставил это поле пустым.]
  • Общее имя: my_hostname.local
  • Адрес электронной почты: [Я специально оставил это поле пустым.]

Мне лично нравится вводить название страны, штата и населенного пункта, поскольку это помогает мне разобраться в этих вещах, но на самом деле это просто глазурь на торте. Сам «торт» - это имя хоста: my_hostname.local .

Теперь это решение работает для соединений через имя хоста. Если на компьютере, с которым у вас возникла проблема, нет имени хоста, его следует настроить. Или, возможно, его следует установить в /etc/hosts на подключающемся компьютере, чтобы как минимум «обмануть» настройку использования имени хоста.

Пользователь в этом отчете о проблеме опубликовал хороший скрипт для создания самозаверяющего сертификата для использования IP-адреса, который находится здесь, но также должен быть способ обработки этого непосредственно из командной строки. И, глядя на этот сайт, кажется, что проблема заключается в том, как настроить запросы SSL с SubjectAltName при использовании OpenSSL.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .