【问题标题】:syslog-ng mysql TLS 1.1系统日志-ng mysql TLS 1.1
【发布时间】:2022-12-15 07:36:03
【问题描述】:

我正在将我的一台服务器从 Ubuntu 18.04 迁移到 Ubuntu 22.04,

我正在复制我的 syslog-ng 配置,并且已经让它大部分工作,除了它不会连接到我的 mysql 服务器(目前需要升级,它正在使用 mariadb 10.1,并且我只能支持 TLS 1.1告诉 )

我曾尝试编辑 /etc/ssl/openssl.cnf 以支持旧版本,但似乎没有效果,而且我对如何在我的配置中配置 ssl 参数一无所知

这是我配置的相关部分

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)
  );
};

【问题讨论】:

    标签: syslog-ng


    【解决方案1】:

    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() 接口添加并不是很难,可以想象所有这些设置都可用。

    【讨论】:

      【解决方案2】:

      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() 接口添加并不是很难,可以想象所有这些设置都可用。

      【讨论】:

        猜你喜欢
        • 2013-01-03
        • 2014-04-30
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 2011-06-18
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        相关资源
        最近更新 更多