Ubuntu 22.04迁移后syslog-ng无法连接仅支持TLS1.1的MariaDB
解决syslog-ng连接仅支持TLS 1.1的MariaDB问题
核心原因
Ubuntu 22.04默认的OpenSSL配置已禁用TLS 1.1,全局修改/etc/ssl/openssl.cnf对syslog-ng的MySQL驱动不生效,需直接在syslog-ng的SQL目标配置中指定兼容的SSL参数。
修改syslog-ng配置
在你的d_sql目标中添加SSL相关参数,强制使用TLS 1.1协议:
destination d_sql { sql( type(mysql) host("REDACTED") username("REDACTED") password("REDACTED") database("REDACTED") table("REDACTED") columns( "username" , "user_agent" ) values("${json.username}" , "${json.user_agent}" ) flags(dont-create-tables,explicit-commits) # 新增SSL配置参数 ssl(true) ssl-protocol("TLSv1.1") ssl-cipher("DEFAULT@SECLEVEL=1") ); };
参数说明
ssl(true):启用SSL加密连接ssl-protocol("TLSv1.1"):强制使用MariaDB 10.1支持的TLS 1.1协议ssl-cipher("DEFAULT@SECLEVEL=1"):降低安全级别,允许TLS 1.1兼容的加密套件(Ubuntu 22.04默认安全级别2会禁用旧套件)
验证与重启
- 检查配置语法合法性:
syslog-ng -s
- 重启syslog-ng服务:
systemctl restart syslog-ng
备选方案(若上述配置不生效)
如果你的syslog-ng版本不支持ssl-protocol和ssl-cipher参数,可通过环境变量指定自定义OpenSSL配置:
- 创建自定义配置文件
/etc/ssl/syslog-ng-openssl.cnf:
openssl_conf = default_conf [default_conf] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] MinProtocol = TLSv1.1 CipherString = DEFAULT@SECLEVEL=1
- 修改syslog-ng服务文件,添加环境变量:
编辑/lib/systemd/system/syslog-ng.service,在[Service]段加入:
Environment=OPENSSL_CONF=/etc/ssl/syslog-ng-openssl.cnf
- 重新加载配置并重启服务:
systemctl daemon-reload systemctl restart syslog-ng
内容的提问来源于stack exchange,提问作者Tim Holum
相关产品推荐
相关产品推荐

