我见过的关于使用 TLS 和 rsyslog 的几乎每一份指南都涉及生成自签名证书并使用它。如果盒子已经设置了合法签名的证书,那么如何设置客户端和服务器以简单地使用它?
答案1
如果您的证书是“合法的”,那么设置它没有什么大区别。广受信任的证书的特点是其信任锚(又称根证书或 CA 证书)植根于操作系统或浏览器的信任存储中。
假设您有server.example.com.key
和。如果信任链(例如 ca.crt、intermediate1.crt、intermediate2.crt 或所有证书串联为一个 chain.crt)成立,server.example.com.csr
您的 CA 将把您的证书、 和所有指向您证书的内容发回给您。有些适用于和。具有与服务器证书相同的信任链。server.example.com.crt
client.crt
client.key
client.crt
在设置此证书时,与自签名证书的最大区别在于,您可能必须在 CA 文件中包含中间证书。如果中间证书存在于系统的信任库中,您所要做的就是将 rsyslog 指向那里(Ubuntu 上的 /etc/ssl/certs/ca-certificates.crt,YMMV)
服务器配置如下:
# 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、证书路径、证书到期日期和权限。