前言
rsyslog版本从v5升级到v8(v8.2110.0)版本时,由于openssl版本有较大的更新,原有接口已删除,但rsyslog源码依旧依赖于openssl原有接口,导致rsyslog无法依赖于新版openssl加密,因此,依据rsyslog官网介绍,采用certtool工具制作证书。
官网链接如下:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
CA证书链接如下:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_ca.html
双向证书如下:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_machine.html
一、证书制作流程
1. 安装certtool工具
Centos: yum install -y gnutls-utils
Ubuntu: apt-get install gnutls-bin gnutls-doc
2. 制作CA证书
2.1 certtool --generate-privkey --outfile ca-key.pem --bits 2048
2.2 certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem
以上划线处为需要填写的配置项。
配置完之后,核对配置,尤其是证书有效期问题。
生成的ca.pem就是根证书。
3. 制作客户端证书与私钥
客户端证书是在日志发送端使用的证书,其中涉及的IP地址为日志发送端IPv4地址。
创建文件夹client,用于存放证书。
mkdir client
3.1 certtool --generate-provkey --outfile ./client/key.pem --bits 2048
3.2 certtool --generate-request --load-privkey ./client/key.pem --outfile ./client/request.pem
以上划线处为需要填写的配置项。
3.3 certtool --generate-certificate --load-request ./client/request.pem --outfile ./client/cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem
以上划线处为需要填写的配置项。
配置完之后,核对配置,尤其是CN是否为日志发送端IPv4地址、证书有效期问题。
文件夹client中生成的cert.pem就是客户端的本地证书,key.pem就是客户端的密钥。
4. 制作服务端证书与私钥
服务端证书是在日志接收端使用的证书,其中涉及的IP地址为日志接收端IPv4地址。
创建文件夹server,用于存放证书。
mkdir server
3.1 certtool --generate-provkey --outfile ./server/key.pem --bits 2048
3.2 certtool --generate-request --load-privkey ./server/key.pem --outfile ./server/request.pem
以上划线处为需要填写的配置项。
3.3 certtool --generate-certificate --load-request ./server/request.pem --outfile ./server/cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem
以上划线处为需要填写的配置项。
配置完之后,核对配置,尤其是CN是否为日志发送端IPv4地址、证书有效期问题。
文件夹server中生成的cert.pem就是服务端的本地证书,key.pem就是服务端的密钥。
二、 常见问题定位
1. 证书路径问题
现象:
证书文件与conf文件配置正确(例如放置在/home/certtool目录),但重启rsyslog进程之后,查询rsyslog状态,显示cacert.pem证书不存在
解决方式:
将证书路径重新上传到/var/log/文件夹下,保证rsyslog有权限获取。
2. 未关闭防火墙
现象:
日志接收服务器tail -f /var/log/messages无报错打印,但日志发送端journalctl -f | grep syslog报错
解决方式:
关闭日志接收服务器的防火墙
systemctl stop firewalld
3. 证书有效期问题
现象: 日志接收端报错“unexpected Gnutls error -110 in nsd_gtls.c:536: The TLS connection was non-properly terminated”,且日志发送端报错“invalid cert info: peer provided 1certificates.Certificate1 info”。
日志服务接收端:
日志发送端:
问题原因:
日志发送端系统时间不在证书的有效期内。
解决方式:
使用date -s "2022-04-16 20:20:30"修改日志发送端系统时间 或 重新制作证书。