Назад | Перейти на главную страницу

Logstash-forwarder выдает ошибки SSL

Эту задачу мне передал мой коллега, и это предыстория.

Он получил стек ELK (Elasticsearch, Logstash и Kibana), работающий с нашими серверами RHEL 6.2, используя обычный метод настройки Logstash на сервере и Logstash-forwarder на всех агентах. Все работает нормально, за исключением двух узлов агента logstash. Он не индексирует данные с этих двух узлов, и эти два узла агента немного отличаются от других агентов в среде. Все агенты (которые работают) работают под управлением машины RHEL 6.2 с «OpenSSL 1.0.0-fips», в то время как два вызывающих проблемы агента работают под управлением RHEL 5.5 с «OpenSSL 0.9.8e-fips-rhel5». Теперь позвольте мне объяснить проблемы, с которыми столкнулись эти два узла, когда я начал над этим работать.

Когда мы перезапускаем службу пересылки logstash с помощью '/etc/init.d/logstash-forwarder restart', выдается следующая ошибка:

2014/10/01 09: 21: 23.898917 Не удалось выполнить рукопожатие tls с 10.xxx x509: невозможно проверить сертификат для 10.xxx, потому что он не содержит IP-сетей SAN 2014/10/01 09: 21: 24.900502 Подключение к [10 .xxx]: 5000 (10.xxx) 2014/10/01 09: 21: 24.902081 Не удалось выполнить рукопожатие tls с 10.xxx x509: невозможно проверить сертификат для 10.xxx, поскольку он не содержит никаких IP-сетей SAN 2014/10 / 01 09: 21: 25.903970 Подключение к [10.xxx]: 5000 (10.xxx) 2014/10/01 09: 21: 25. 905708 Не удалось установить связь с помощью tls с 10.xxx x509: невозможно проверить сертификат для 10.xxx, потому что это не так не содержат IP-сетей SAN

Я понимаю, что это связано с тем, что агент пытается подключиться к серверу через SSL, используя свой IP-адрес, поэтому я снова воссоздал сертификаты с IP SAN, а затем он начал выдавать мне следующие ошибки не только с машинами 5.2, но и с 6.2 машины:

2014/10/03 17: 09: 12.403253 Не удалось выполнить рукопожатие tls с 10.xxx x509: сертификат, подписанный неизвестным органом. 2014/10/03 17: 09: 13.404974 Подключение к [10.xxx]: 5000 (10.xxx) 2014 / 10/03 17: 09: 13.428156 Не удалось выполнить рукопожатие tls с 10.xxx x509: сертификат, подписанный неизвестным органом 2014/10/03 17: 09: 14.429648 Подключение к [10.xxx]: 5000 (10.xxx) 2014 / 10/03 17: 09: 14.442006 Не удалось выполнить рукопожатие tls с 10.xxx x509: сертификат, подписанный неизвестным органом

Я попытался добавить сертификат в ca-bundle.crt, добавив новый сертификат logstash в файл CA с помощью:

'openssl x509 -in certs / logstash-forwarder.crt -text >> certs / ca-bundle.crt'.

У меня есть ощущение, что я смогу исправить всю проблему, если смогу добавить сертификаты IP SAN'd в список доверенных сертификатов всех узлов агента. Мои вопросы:

Еще одна вещь, сервер Logstash работает под управлением RHEL 6.2. И на всех узлах агента (работающих и неработающих) установлена ​​одна и та же версия logstash-forwarder - logstash-forwarder-0.3.1-1.x86_64.rpm. Каков правильный способ заставить эти узлы агентов принимать сертификаты IP SAN? Я правильно понимаю проблему? Есть ли несовместимость между машинами RHEL 6.x и RHEL 5.x?

У меня есть следующие записи в / etc / logstash-forwarder

[root @ name2 ~] # cat / etc / logstash-forwarder {"сеть": {"серверы": ["10.xxx:5000"], "тайм-аут": 15, "ssl ca": "/ etc / pki /tls/certs/logstash-forwarder.crt "," ssl strict verify ":" false "}," files ": [{" paths ": [" / var / log / maillog "]," fields ": {" type ":" syslog "}}]} [root @ name2 ~] #

Заранее спасибо.

Используемый вами сертификат не имеет действительных IP-адресов SAN, как указано в сообщении:

Failed to tls handshake with x.x.x.x x509: cannot validate certificate for x.x.x.x because 
it doesn't contain any IP SANs  

Если вы подключаетесь с использованием IP-адреса, ваш сертификат должен содержать соответствующий IP-адрес SAN, чтобы пройти проверку в Go 1.3 и выше. Об этом (пока?) Не упоминается ни в одном файле README или документации, но есть некоторые проблемы ( # 226 , # 221 ) открыть в репозитории github проекта.
Чтобы разрешить IP-адрес в качестве имени сервера, сертификат SSL должен включать IP-адрес в качестве subjectAltName поле.

Чтобы решить эту проблему, вы можете использовать следующую процедуру для создания сертификата и ключа SSL:

  1. Создать файл notsec.cfr (или любое другое имя), содержащий вывод, например:

    [req]
    distinguished_name = req_distinguished_name
    x509_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = TG
    ST = Togo
    L =  Lome
    O = Private company
    CN = *
    
    [v3_req]
    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid,issuer
    basicConstraints = CA:TRUE
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = *
    DNS.2 = *.*
    DNS.3 = *.*.*
    DNS.4 = *.*.*.*
    DNS.5 = *.*.*.*.*
    DNS.6 = *.*.*.*.*.*
    DNS.7 = *.*.*.*.*.*.*
    IP.1 = 192.168.1.1
    IP.2 = 192.168.69.14  
    

Если вы подключаетесь через имена хостов, вы можете удалить IP-адреса SAN, в противном случае добавьте IP-адрес вашего сервера logstash.

  1. Создайте сертификат и ключ с помощью следующей команды (используя файл из пункта 1):

    openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout notsecure.key -out notsecure.crt -config notsec.cnf -days 1825
    

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