Моя проблема в том, что я не могу получить журналы из своего удаленного приложения для входа на вход Graylog2 с использованием TLS. Удаленное приложение регистрировалось просто отлично, прежде чем я попытался включить TLS с самозаверяющими сертификатами, поэтому я почти уверен, что у меня просто проблема с конфигурацией.
Вот некоторая предыстория. Сначала я создал несколько самоподписанных сертификатов, выполнив следующие действия:
$ openssl genrsa -out CA.key 2048
$ openssl req -x509 -new -nodes -key CA.key -sha256 -days 3650 -out rootCA.crt
$ openssl genrsa -out graylog-server.key 2048
$ openssl req -new -key graylog-server.key -out graylog-server.csr
$ openssl x509 -req -in graylog-server.csr -CA rootCA.crt -CAkey CA.key -CAcreateserial -out graylog-server.crt -days 3640 -sha256
источник: https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309
Где я заполнил DNS-имя для сервера Graylog в файле graylog-server.crt
Затем я импортировал rootCA.crt в хранилище ключей на сервере Graylog:
$ keytool -importcert -keystore ./graylog-cacerts -alias graylogRootCaCert -file rootCa.crt
Затем я вхожу в веб-интерфейс Graylog и перенастраиваю поля ввода следующим образом:
port: 51xx
TLS Cert File: /path/to/certs/graylog-server.csr
TLS Private Key File: /path/to/certs/graylog-server.key
Enable TLS: True
TLS Client authentication: Optional
TLS Client Auth Trusted Certs: /path/to/certs*
все созданные сертификаты находятся в каталоге /path/to/certs/
, который принадлежит Graylog. Все ключи доступны только для чтения.
Удаленное приложение, работающее в Ubuntu 16.04, имеет конфигурацию rsyslog, которая выглядит следующим образом:
$ cat 60-remote-rsyslog.conf
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/graylog/rootCA.pem
$ActionSendStreamDriverAuthMode anon
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
#$ActionSendStreamDriverPermittedPeer graylog.name.com
. @@graylog.name.com:51XX;RSYSLOG_SyslogProtocol23Format
Что касается rsyslog.conf на сервере, то он использует все значения по умолчанию. Я видел решение, в котором TLS настраивается напрямую через rsyslog, а затем Graylog забирает журналы оттуда, но это не идеально для моего приложения. Нам нужно использовать входы. Это решение находится здесь: https://serverfault.com/questions/807651/forwarding-logs-from-rsyslog-to-graylog-over-tls
Я попытался выполнить шаги по этим ссылкам, но они все еще не работают: https://community.graylog.org/t/rsyslog-over-tls/263/4 https://community.graylog.org/t/encrypt-traffic-from-rsyslog/5649
Я ожидаю, что журналы будут поступать от клиентского TLS, защищенного на настроенном вводе. Происходит то, что логи не поступают на вход, а в логах Graylog-сервера нет никаких ошибок, о которых можно было бы говорить.
Любая помощь или предложения приветствуются. Спасибо.