log4j2 properties 配置日志发送给rsyslog over TLS

环境

ubuntu18。同上一篇over tcp的环境。
将ODL(java,客户端)的日志发送给rsyslog(服务器端)。

准备

rsyslog使用的gtls支持四种认证模式:

  • anon - IETF 的 draft-ietf-syslog-transport-tls-12 互联网草案中描述的匿名身份验证
  • x509/fingerprint - IETF 的 draft-ietf-syslog-transport-tls-12 互联网草案中描述的证书指纹认证
  • x509/certvalid - 仅证书验证
  • x509/name - IETF 的 draft-ietf-syslog-transport-tls-12 Internet 草案中描述的证书验证和主题名称身份验证

不推荐1、3,可使用2、4,我们来配置4。

注意:即使在 x509/fingerprint 模式下,客户端和服务器证书目前也必须由同一个根 CA 签名。

这样客户端(ODL)和服务器端(日志服务器,rsyslog)都需要复制的CA证书、生成自己的证书和公钥私钥。

a copy of ca.pem
cert.pem
key.pem

生成CA证书、证书、密钥

参考官网指导

先放放,下面记录下思路,有时间再回来实践。

官方建议使用 GnuTLS 的 certtool 生成必要证书。但是说适用于不涉及PKI的人。不太清楚什么意思。

按照步骤生成CA的私钥、CA证书。

certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem

客户端和服务器各自一套的私钥和证书

certtool --generate-privkey --outfile key.pem
certtool --generate-request --load-privkey key.pem --outfile request.pem
certtool --generate-certificate --load-request request.pem --outfile cert.pem \ --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

客户端:
cert.pem和key.pem,通过格式转换成java支持的keystore.jks,用来设置keyStore。
a copy of ca.pem,通过格式转换成truststore.jks,用来设置trustStore。
格式转化参考如何将PEM证书转换成JKS证书

服务器端:
直接配置三个文件的路径。

客户端-log4j2

还是配置/etc/org.ops4j.pax.logging.cfg,在上次实现TCP传输的基础上,添加

# tls 1.2
log4j2.appender.syslog.protocol = ssl
log4j2.appender.syslog.ssl.type = ssl
log4j2.appender.syslog.ssl.keyStore.type = keyStore
log4j2.appender.syslog.ssl.keyStore.location = ${karaf.etc}/keystores/keystore.jks
log4j2.appender.syslog.ssl.keyStore.password = myclient
# 后面这两个路径没验证,不一定对。前面的启动ODL没报错。
#log4j2.appender.syslog.ssl.trustStore.location = truststore.jks
#log4j2.appender.syslog.ssl.trustStore.password = cacert

服务器端-rsyslog

服务器端配置的时候,注意InputTCPServer而非ActionSend,后者是用来配置rsyslog客户端的。
还是配置/etc/rsyslog.conf,在实现TCP传输的基础上。

未验证。这里可能还是有个rsyslog新旧版本命令格式不兼容的问题。

#加载gtls驱动,用于实现tls加密
$DefaultNetstreamDriver gtls
# 证书文件

#设置CA证书路径,用户可自定义配置路径
$DefaultNetstreamDriverCAFile /path/to/contrib/gnutls/ca.pem
#设置服务器证书文件路径,用户可自定义配置路径
$DefaultNetstreamDriverCertFile /path/to/contrib/gnutls/cert.pem
#设置服务器秘钥文件路径,用户可自定义配置路径
$DefaultNetstreamDriverKeyFile /path/to/contrib/gnutls/key.pem

$InputTCPServerStreamDriverMode 1 # 以仅 TLS 模式运行驱动程序
$InputTCPServerStreamDriverAuthMode x509/name

重启rsyslog。

踩过的坑

实际上在log4j端只添加一个log4j2.appender.syslog.protocol = ssl 服务器端不做任何添加,收到的日志似乎就已经是加密的(不确定,#010之类的乱码)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值