我正在尝试为在 AWS EC2 实例上运行的 syslog-ng 服务添加 TLS 支持(日志正在发送到 loggly)。没有 TLS 的基本配置可以正常工作,但是当我将配置中的目标替换为:
destination d_loggly {
tcp("logs-01.loggly.com" port(6514)
tls(peer-verify(required-untrusted) ca_dir('/opt/syslog-ng/keys/ca.d/'))
template(LogglyFormat));
};
当我重新启动 syslog-ng 服务时出现以下错误:
[ec2-user@ip-10-0-1-123 syslog-ng]$ sudo /etc/init.d/syslog-ng restart
Stopping syslog-ng: [ OK ]
Error parsing afsocket, syntax error, unexpected LL_IDENTIFIER, expecting ')' in /etc/syslog-ng/syslog-ng.conf at line 74, column 5:
tls(peer-verify(required-untrusted) ca_dir('/opt/syslog-ng/keys/ca.d/'))
^^^
syslog-ng documentation: http://www.balabit.com/support/documentation/?product=syslog-ng
mailing list: https://lists.balabit.hu/mailman/listinfo/syslog-ng
我可以确认证书位于 /opt/syslog-ng/keys/ca.d/:
[ec2-user@ip-10-0-1-123 /]$ ls -l /opt/syslog-ng/keys/ca.d/
total 16
-rw-r--r-- 1 root root 1968 Jul 18 11:39 loggly.com.crt
-rw-r--r-- 1 root root 5241 Jul 18 11:39 loggly_full.crt
-rw-r--r-- 1 root root 3273 Jul 18 11:39 sf_bundle.crt
如能得到任何有助于使 TLS 支持正常运行的帮助,我们将不胜感激。
答案1
经过几个小时的搜索,我在这里找到了答案:
http://www.syslog.org/forum/syslog-ng/tls-configuration-syntax-problem/
这是 RHEL/EPEL 中 syslog-ng 软件包的一个限制:syslog-ng 位于 /sbin 中,而 openssl 库安装在 /usr/lib 下。由于 /usr 可能是在早期启动期间不可用的单独分区,因此无法在 RHEL 软件包中启用加密支持。
由于 AWS Linux 基于 RHEL,因此这里也存在同样的限制。
我使用以下指南从源代码编译 syslog-ng,现在一切都按预期工作:
https://czanik.blogs.balabit.com/2011/06/compiling-syslog-ng-with-database-support-for-centos-5-co/