Почти каждое руководство, которое я видел по использованию TLS с rsyslog, включает создание самоподписанного сертификата и его использование. Если ящики уже настроены с законным подписанным сертификатом, как вы настроить клиент и сервер, чтобы просто использовать его?
Нет большой разницы в настройке, если ваш сертификат «законный». Широко доверенный сертификат характеризуется тем, что его якорь доверия (также известный как корневой сертификат или сертификат CA) помещен в хранилище доверенных сертификатов ОС или браузера.
Предположим, у вас есть server.example.com.key
и server.example.com.csr
. Ваш ЦС отправит вам сертификат, server.example.com.crt
, и все, что ведет к вашему сертификату, если цепочка доверия, например ca.crt, intermediate1.crt, intermediate2.crt или все сертификаты, объединенные в один как chain.crt. Некоторые идут для client.crt
и client.key
. client.crt
имеет ту же цепочку доверия, что и сертификат сервера.
Большая разница в настройке самоподписанного сертификата заключается в том, что вам, возможно, придется включить промежуточные сертификаты в файл CA. Если промежуточные продукты присутствуют в хранилище доверенных сертификатов вашей системы, все, что вам нужно сделать, это указать туда rsyslog (/etc/ssl/certs/ca-certificates.crt в Ubuntu, YMMV)
Документы (Вот, Вот и Вот) красиво подытожим, как настроить TLS:
Конфигурация сервера делается так:
# make gtls driver the default
$DefaultNetstreamDriver gtls
# certificate files
$DefaultNetstreamDriverCAFile /path/to/chain.crt
$DefaultNetstreamDriverCertFile /path/to/server.example.com.crt
$DefaultNetstreamDriverKeyFile /path/to/server.example.com.key
$ModLoad imtcp # load TCP listener
$InputTCPServerStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer *.example.com
$InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode
$InputTCPServerRun 10514 # start up listener at port 10514
Конфигурация клиента должна выглядеть так:
# certificate files
$DefaultNetstreamDriverCAFile /path/to/chain.crt
$DefaultNetstreamDriverCertFile /path/to/client.crt
$DefaultNetstreamDriverKeyFile /path/to/client.key
# set up the action
$DefaultNetstreamDriver gtls # use gtls netstream driver
$ActionSendStreamDriverMode 1 # require TLS for the connection
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer server.example.com
*.* @@(o)server.example.com:10514 # send (all) messages
Если у вас есть собственные легальные сертификаты:
mycompany.ca
mycompany.crt
mycompany.key
Раскомментировать:
$ModLoad imtcp
Добавить:
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/certs/mycompany.ca
$DefaultNetstreamDriverCertFile /etc/ssl/certs/mycompany.crt
$DefaultNetstreamDriverKeyFile /etc/ssl/certs/mycompany.key
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerStreamDriverMode 1
$InputTCPServerRun 10514
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/ssl/certs/mycompany.ca
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer *.mycompany.com
$ActionSendStreamDriverMode 1
*.* @@rsyslog_server.mycompany.com:10514 (or ip)
Перезапустить системный журнал
Чтобы проверить результаты на сервере, запустите:
sudo tcpdump -i eth0 tcp port 10514 -X -s 0 -nn
Проверьте Selinux, Путь к сертификатам, Срок действия сертификатов и разрешения.