Я пытаюсь настроить пересылку logstash, но у меня проблемы с созданием правильного безопасного канала. Попытка настроить это на двух компьютерах с Ubuntu (сервер 14.04), работающих в virtualbox. Они на 100% чисты (не затрагиваются файлы hosts или установлены какие-либо другие пакеты, кроме необходимых java, ngix, elastisearch и т. Д. Для logstash)
Я не верю, что это проблема logstash, но неправильная обработка сертификатов или что-то неправильно установлено ни на logstash ubuntu, ни на машине пересылки.
Я сгенерировал ключи:
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
Мой входной файл conf на сервере 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"
}
}
Ключи были скопированы на хост пересылки , который имеет следующую конфигурацию.
{
"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" }
}
]
}
Когда сервер logstash запущен, я запускаю sudo service logstash-forwarder на компьютере пересылки, выдавая следующую повторяющуюся ошибку:
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
Как я упоминал ранее, я не считаю, что это проблема logstash, но проблема конфигурации сертификата / компьютера. Проблема в том, что я не могу ее решить. Надеюсь, что некоторые умные умы могут помочь мне?
Благодарность
openssl x509 -text
из сертификата, установленного на сервере. Также проверьте,openssl s_client
что сервер возвращает ожидаемый сертификат и используйте его-CApath
с s_client, чтобы проверить, что цепочка доверия может быть проверена по настроенному CA.Существует сценарий для создания надлежащих сертификатов для дровосека, который был упомянут в билете github logstash: SSL рукопожатие завершается неудачно из-за отсутствия IP-сетей SAN
Загрузите файл:
curl -O https://raw.githubusercontent.com/driskell/log-courier/1.x/src/lc-tlscert/lc-tlscert.go
...построить это:
..и беги:
источник
У меня была настоящая проблема с этим. Я не использую logstash, я просто пытался заставить IP SAN работать с Docker TLS. Я бы создал сертификат, как описано в статье о докере по адресу https ( https://docs.docker.com/articles/https/ ), а затем при подключении из докера:
Я получил бы эту ошибку:
что сводило меня с ума. Признаюсь, я спотыкаюсь во всех вещах openssl, так что все, возможно, уже знают, что я обнаружил. Пример subjectAltName здесь (и везде, где еще) показывает обновление файла openssl.cnf. Я не мог заставить это работать. Я обнаружил файл openssl.cnf, скопировал его в локальный каталог и внес изменения в него. Когда я исследовал сертификат, он не содержал расширения:
Команда, используемая для создания этого сертификата, находится здесь (из статьи о докере):
Вы не можете добавить строку -config openssl.cnf к этой команде, она недопустима. Также вы не можете скопировать файл openssl.cnf в текущий каталог, изменить его и надеяться заставить его работать таким образом. Несколько строк спустя я заметил, что сертификат 'client' использует -extfile extfile.cnf. Итак, я попробовал это:
и это исправило. Поэтому по какой-то причине моя версия openssl не позволяла мне изменять файл openssl.cnf, но я мог указать subjectAltName следующим образом. Работает отлично!
Вы можете указать любое количество IP-адресов, например, IP: 127.0.0.1, IP: 127.0.1.1 (также не localhost).
источник
Пожалуйста, посмотрите решение @Steffen Ullrich выше для быстрого решения.
Существует также проблема / обсуждение этого в github проекта logstash-forwarder . Посмотрите его (скоро, так как в настоящее время работа над ним ведется) для более простого решения.
источник