将 rsyslog 与 TLS 结合使用而不生成自签名证书

pla*_*aux 5 certificate-authority rsyslog

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

fue*_*ero 4

如果您的证书是“合法的”,那么设置此选项没有太大区别。广泛信任的证书的特点是其信任锚(也称为根证书或 CA 证书)植入操作系统或浏览器的信任存储中。

假设你有server.example.com.keyserver.example.com.csr。您的 CA 会向您发回您的证书,server.example.com.crt以及导致您的证书的所有信任链(例如 ca.crt、intermediate1.crt、intermediate2.crt 或作为 chain.crt 连接在一个证书中的所有证书)。有些适合client.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
Run Code Online (Sandbox Code Playgroud)

客户端的配置应该如下所示:

# 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
Run Code Online (Sandbox Code Playgroud)