必须安装rsyslog-gnutls包,否则rsyslog无法识别gtls驱动导致启动失败;Debian/Ubuntu和RHEL/CentOS 7+均需安装该包(非gnutls-utils),安装后通过rsyslogd -v | grep gnutls验证,并须改用非特权端口(如10514)监听TLS连接。

rsyslog TLS加密传输必须加载 rsyslog-gnutls 模块
不装这个包,哪怕配置写全了,rsyslogd -N1 会直接报错说找不到 gtls 驱动,日志连启动都失败。Debian/Ubuntu 装 rsyslog-gnutls,RHEL/CentOS 7+ 要装 rsyslog-gnutls(不是 gnutls-utils,后者只提供 certtool)。装完检查:rsyslogd -v | grep gnutls 应该输出带 gtls 的行。
服务端监听端口不能用 514,得换非特权端口
启用 TLS 后,rsyslog 不再以 root 权限运行监听线程(出于安全限制),所以不能再绑定 514 这类 10514 或 6514。配置里必须显式写:input(type="imtcp" port="10514" protocol="tcp" streamdriver="gtls" streamdriver.mode="1" streamdriver.authmode="x509/name")。漏掉 streamdriver="gtls" 或 mode="1",就退化成明文 TCP。
证书路径和权限必须严格匹配配置
服务端要用到三个文件:/etc/rsyslog.d/ca.pem(CA 根证书)、/etc/rsyslog.d/cert.pem(服务端证书)、/etc/rsyslog.d/key.pem(私钥)。它们的 owner 必须是 syslog(或 root,但组要为 syslog),权限不能是 644——私钥至少得 600,否则 rsyslog 启动时会拒绝加载并报 permission denied on keyfile。验证命令:ls -l /etc/rsyslog.d/*.pem。
客户端配置里 @@ 和 gtls 驱动必须配套
客户端转发规则不能只写 *.* @@logserver:10514,那还是明文 TCP。必须加驱动声明:*.* @@logserver:10514;RSYSLOG_ForwardFormat,并在前面加载模块:module(load="omfwd") 和 module(load="gtls")。同时指定 CA 路径:$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem。如果服务端用了 authmode="x509/name",客户端证书的 CN 或 subjectAltName 必须和服务端配置的允许名匹配,否则连接被拒。
TLS 加密不是配完就通的——证书信任链、端口权限、驱动加载顺序、用户组归属,四个点只要一个松动,journalctl -u rsyslog -n 50 里准能看到明确的拒绝提示,别跳过日志直接猜。


















