使用 rsyslog 和 TLS 而不生成自签名证书

使用 rsyslog 和 TLS 而不生成自签名证书

我见过的关于使用 TLS 和 rsyslog 的几乎每一份指南都涉及生成自签名证书并使用它。如果盒子已经设置了合法签名的证书,那么如何设置客户端和服务器以简单地使用它?

答案1

如果您的证书是“合法的”,那么设置它没有什么大区别。广受信任的证书的特点是其信任锚(又称根证书或 CA 证书)植根于操作系统或浏览器的信任存储中。

假设您有server.example.com.key和。如果信任链(例如 ca.crt、intermediate1.crt、intermediate2.crt 或所有证书串联为一个 chain.crt)成立,server.example.com.csr您的 CA 将把您的证书、 和所有指向您证书的内容发回给您。有些适用于和。具有与服务器证书相同的信任链。server.example.com.crtclient.crtclient.keyclient.crt

在设置此证书时,与自签名证书的最大区别在于,您可能必须在 CA 文件中包含中间证书。如果中间证书存在于系统的信任库中,您所要做的就是将 rsyslog 指向那里(Ubuntu 上的 /etc/ssl/certs/ca-certificates.crt,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

答案2

如果您有自己的合法证书:

我的公司

我的公司

我的公司密钥

在服务器上:

取消注释:

$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、证书路径、证书到期日期和权限。

相关内容