Эту задачу мне передал мой коллега, и это предыстория.
Он получил стек 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:
Создать файл 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):
openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout notsecure.key -out notsecure.crt -config notsec.cnf -days 1825
Это создаст своего рода шаблонный сертификат, принимающий любое имя хоста и IP-адреса, упомянутые в этом файле. Конечно, это всего лишь простой пример, и вам нужно будет изменить настройки в соответствии с вашими потребностями.