syslog-ng 通过 libdbi 库使用 mysql。我无法通过 libdbi 找到 SSL 设置的显式配置,但是您可以通过 dbd-option() 参数将配置设置传递给 sql 驱动程序。
这些是 libdbi-drivers 的 MySQL 驱动程序接受的 dbd-options:
~/sources/libdbi-drivers-0.9.0/drivers/mysql$ grep get_option *.c
const char *host = dbi_conn_get_option(conn, "host");
const char *username = dbi_conn_get_option(conn, "username");
const char *password = dbi_conn_get_option(conn, "password");
const char *dbname = dbi_conn_get_option(conn, "dbname");
const char *encoding = dbi_conn_get_option(conn, "encoding");
const char *port = dbi_conn_get_option(conn, "port");
n_port = (long)dbi_conn_get_option_numeric(conn, "port");
int timeout = dbi_conn_get_option_numeric(conn, "timeout");
const char *unix_socket = dbi_conn_get_option(conn, "mysql_unix_socket");
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_compression") > 0) ? CLIENT_COMPRESS : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_compress") > 0) ? CLIENT_COMPRESS : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_found_rows") > 0) ? CLIENT_FOUND_ROWS : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_ignore_SPACE") > 0) ? CLIENT_IGNORE_SPACE : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_interactive") > 0) ? CLIENT_INTERACTIVE : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_local_files") > 0) ? CLIENT_LOCAL_FILES : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_multi_statements") > 0) ? CLIENT_MULTI_STATEMENTS : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_multi_results") > 0) ? CLIENT_MULTI_RESULTS : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_no_schema") > 0) ? CLIENT_NO_SCHEMA : 0;
client_flags |= (dbi_conn_get_option_numeric(conn, "mysql_client_odbc") > 0) ? CLIENT_ODBC : 0;
encodingopt = dbi_conn_get_option(conn, "encoding");
if (dbi_conn_get_option_numeric(result->conn, "mysql_include_trailing_null") == 1) {
不幸的是,乍一看,我看不到更改 MySQL 客户端库的 SSL 设置的设置。
本章https://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-protocols-ciphers.html#encrypted-connection-protocol-negotiation
要以编程方式设置这些设置,需要调用 mysql_ssl_set() 函数 (https://dev.mysql.com/doc/c-api/5.7/en/mysql-ssl-set.html) 或更通用的 mysql_options() 函数 (https://dev.mysql.com/doc/c-api/5.7/en/mysql-options.html)
不幸的是,libdbi-drivers/mysql 都不支持,所以目前,您不能真正从 syslog-ng 中更改 TLS 设置。
通过上面提到的 dbd-option() 接口添加并不是很难,可以想象所有这些设置都可用。