将rsyslog与TLS一起使用而不生成自签名证书

几乎每个指南,我已经看到与rsyslog使用TLS涉及生成一个自签名的证书,并使用它。 如果这些盒子已经设置了合法的签名证书,你如何设置客户端和服务器来简单地使用它?

如果你的证书是“合法”的,那么设置这个没什么太大的区别。 广泛信任的证书的特征在于具有其在操作系统或浏览器的信任存储器中植入的信任锚(又名根或CA证书)。

假设你有server.example.com.keyserver.example.com.csr 。 如果信任链(例如ca.crt,intermediate1.crt,intermediate2.crt或所有证书链接在一个链中),您的CA会将您的证书server.example.com.crt和所有导致证书的信息发回给您.CRT。 一些用于client.crtclient.keyclient.crt具有与服务器证书相同的信任链。

自签名证书的最大区别在于您可能必须在CA文件中包含中间证书。 如果中间体存在于系统的信任库中,则只需指向rsyslog(Ubuntu上的/etc/ssl/certs/ca-certificates.crt,YMMV)

文档( 这里 , 这里和这里 )很好地总结了如何设置TLS:

服务器configuration是这样完成的:

 # 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 

客户端的configuration应该如下所示:

 # 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) 

重新启动系统日志

要在服务器上运行testing结果:

 sudo tcpdump -i eth0 tcp port 10514 -X -s 0 -nn 

validationSelinux,证书path,证书到期date和权限。