Clickhouse 配置中文详细介绍 第一章 config.xml

Clickhouse 的配置太多且难以理解,花了两天逐步理解每个配置的作用

并逐段机翻了一下注释,并增加了如何配置的建议

<!--
  NOTE: User and query level settings are set up in "users.xml" file.
  If you have accidentally specified user-level settings here, server won't start.
  You can either move the settings to the right place inside "users.xml" file
   or add <skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings> here.

   提示:
        不要把该配置在 users.xml 里面的标签配置到 config.xml 或其他类型的配置文件,只能在同类型的(主子文件)中配置,否则 Clickhouse 会启动失败!
        如果配错了,而又不想挪动配置,可以使用这个标签跳过检查,skip_check_for_incorrect_settings,不推荐用于生产环境,因为它可能会隐藏配置错误。
-->

<!-- 
    注意:
        Clickhouse 的配置标签顺序比较绕,同类型的配置标签可能并不是有序的。比如:第 N 行是配置某个文件path,第 N+M 行又有配置另一个文件path
-->

<clickhouse>



    <!-- 
        引入配置,将多个配置文件组织在一起,从而简化主配置文件的结构,并实现配置的模块化管理
        ClickHouse 服务器在启动时会读取并解析主配置文件中的 <include_from> 标签,加载指定路径下的 XML 文件内容作为配置的一部分。这使得可以将特定的配置分离到单独的文件中,例如集群配置、安全配置等。
        如果主配置文件与包含的文件中存在相同的标签,ClickHouse 会根据以下规则进行解析:
        [[ 顺序解析,并且,后解析的配置会覆盖先前解析的相同标签的配置! ]]
        1、如果 include_from 标签在最上方,解析时会先解析引入文件(子文件)中的内容,完毕后,继续往下执行(主文件),也就是说,如果有相同标签配置,这种情况下主文件会覆盖子文件的配置
        2、如果 include_from 标签在最下方,解析时会顺序解析(主文件),如果有相同配置,最后解析(子文件)时,会将(主文件)的配置覆盖

        总结:
            1、解析的顺序决定覆盖的优先级:后解析的配置项会覆盖先解析的配置项。
            2、无论配置在主文件还是包含文件中,最终生效的配置是最后被解析到的配置。

        建议:
            1、如果有过多的自定义配置,可以拆分为多个子文件,主文件只引入所有子文件,不保留任何配置。
            2、如果改动的配置较少,可以不使用子文件,全部在当前文件改动。
    -->
    <include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>



    <!-- ============================================================= 日志配置 ================================================================ -->

    <logger>
        <!-- Possible levels [1]: 设置日志记录的详细级别:

          - none (关闭日志记录)
          - fatal 记录致命错误
          - critical 记录严重错误
          - error 
          - warning
          - notice 记录通知信息
          - information 记录详细信息
          - debug
          - trace 记录所有日志信息,包括详细的调试信息
          - test (不适合生产使用)

            [1]: https://github.com/pocoproject/poco/blob/poco-1.9.4-release/Foundation/include/Poco/Logger.h#L105-L114
        -->
        <level>trace</level>

        <!-- 普通日志目录 -->
        <log>/data/clickhouse/log/clickhouse-server.log</log>

        <!-- error 日志目录 -->
        <errorlog>/data/clickhouse/log/clickhouse-server-err.log</errorlog>

        <!-- 建议:根据磁盘空间和日志生成量,调整日志文件大小和数量。对于大多数生产环境,1GB 的日志文件大小和 10 个文件的保留数量是合适的,但可以根据实际需求进行调整。 -->

        <!-- 每个日志文件的最大大小,设置为 1000M 表示每个日志文件最大 1GB。 -->
        <size>1000M</size>
        <!-- 保留的日志文件数量,设置为 10 表示保留 10 个日志文件。 -->
        <count>10</count>

        <!-- 
            含义:控制是否将日志输出到控制台。默认行为是自动检测,如果不是守护进程模式并且是终端(TTY),则会输出到控制台。
            建议:一般情况下,建议注释掉或删除此配置,以避免不必要的控制台输出。日志通常写入文件,而不是控制台。 
        -->
        <!-- <console>1</console> --> <!-- Default behavior is autodetection (log to console if not daemon mode and is tty) -->

        <!-- 
            每级覆盖(旧版):
            例如,要禁止记录 ConfigReloader,您可以使用 levels.logger 是保留的,见下文。
            含义:可以针对不同的日志记录器设置特定的日志级别。例如,可以选择对某些日志记录器禁用日志。
            建议:一般情况下,保持默认配置。如果有特定的需求,可以针对性地配置日志级别。
        -->
        <!--
        <levels>
          <ConfigReloader>none</ConfigReloader>
        </levels>
        -->

        <!-- 
            每级覆盖(新版):
            例如,要禁止默认用户的 RBAC 日志记录,您可以使用:
            (但请注意,即使在小幅升级之后,记录器名称也可能会因版本而异)
        -->
        <!--
        <levels>
          <logger>
            <name>ContextAccess (default)</name>
            <level>none</level>
          </logger>
          <logger>
            <name>DatabaseOrdinary (test)</name>
            <level>none</level>
          </logger>
        </levels>
        -->


        <!-- 
            结构化日志格式:
            可以指定日志格式(目前仅支持 JSON)。在这种情况下,将打印控制台日志,以指定格式,如 JSON。
            {"date_time":"1650918987.180175","thread_name":"#1","thread_id":"254545","level":"Trace","query_id":"","logger_name":"BaseDaemon","message":"Received signal 2","source_file":"../base/daemon/BaseDaemon.cpp; virtual void SignalListener::run()","source_line":"192"}            要启用 JSON 日志记录支持,请取消注释下面的整个 <formatting> 标记。

            a) 您可以通过更改 <names> 标签内的标签值下的值来修改键名称。
            例如,要将 DATE_TIME 更改为 MY_DATE_TIME,您可以执行以下操作:
            <date_time>MY_DATE_TIME</date_time>

            b) 您可以阻止不需要的日志属性出现在日志中。为此,您只需注释掉即可(推荐),该文件中的该属性。
            例如,如果您不希望日志打印query_id,则可以仅注释掉<query_id>标签。
            但是,如果注释掉 <names> 下的所有标签,程序将打印默认值
        -->
        <!-- <formatting>
            <type>json</type>
            <names>
                <date_time>date_time</date_time>
                <thread_name>thread_name</thread_name>
                <thread_id>thread_id</thread_id>
                <level>level</level>
                <query_id>query_id</query_id>
                <logger_name>logger_name</logger_name>
                <message>message</message>
                <source_file>source_file</source_file>
                <source_line>source_line</source_line>
            </names>
        </formatting> -->
    </logger>



    <!-- ============================================================= 端口及访问相关配置 ================================================================ -->


    <!-- 在选项请求中添加响应头。 OPTIONS 方法用于 CORS 预检请求 -->
    <!-- 默认情况下它是关闭的。接下来的标头对于 CORS 是必需的.-->

    <!-- 
        Access-Control-Allow-Origin
        含义:指定哪些域可以访问你的资源。* 表示允许所有域访问。如果需要限制特定的域,可以将 * 替换为域名,例如 https://example.com。
        建议:在生产环境中,应该替换为特定的域名,以增强安全性。

        Access-Control-Allow-Headers
        含义:指定允许的请求头字段。origin 和 x-requested-with 是常见的头部字段,通常用于标识请求源和类型。
        建议:根据你的应用需求,添加或调整允许的请求头字段。如果需要支持更多头字段,请在此列出它们。

        Access-Control-Allow-Methods
        含义:指定允许的 HTTP 方法。POST, GET, 和 OPTIONS 是常用的方法,OPTIONS 用于 CORS 预检请求。
        建议:根据实际使用的 HTTP 方法进行配置。如果支持其他方法(如 PUT, DELETE),请在此添加。

        Access-Control-Max-Age
        含义:指定预检请求的结果在多长时间内有效(以秒为单位)。86400 秒等于 24 小时。
        建议:可以根据实际需求调整。如果希望减少预检请求的频率,可以增加此值,但也可能导致更长时间的缓存结果。

        配置建议
        安全性:在生产环境中,建议将 Access-Control-Allow-Origin 的值设置为特定的域名,而不是 *,以防止未经授权的域访问你的资源。
        灵活性:根据实际需求,调整 Access-Control-Allow-Headers 和 Access-Control-Allow-Methods 的内容,以支持所需的请求头和方法。
        性能:设置适当的 Access-Control-Max-Age 值,可以减少预检请求的频率,但要权衡缓存时间与数据的新鲜性。
    -->


    <!-- http_options_response>
        <header>
            <name>Access-Control-Allow-Origin</name>
            <value>*</value>
        </header>
        <header>
            <name>Access-Control-Allow-Headers</name>
            <value>origin, x-requested-with</value>
        </header>
        <header>
            <name>Access-Control-Allow-Methods</name>
            <value>POST, GET, OPTIONS</value>
        </header>
        <header>
            <name>Access-Control-Max-Age</name>
            <value>86400</value>
        </header>
    </http_options_response -->




    <!-- 这是将在 clickhouse-client 中显示的名称。默认情况下,任何带有“生产”的内容都会在查询提示中以红色突出显示。 -->
    <!--display_name>production</display_name-->

    <!-- HTTP API 的端口。另请参阅“https_port”以了解安全连接。ODBC 和 JDBC 驱动程序(DataGrip、Dbeaver 等)也使用此接口,以及大多数 Web 界面(嵌入式 UI、Grafana、Redash 等)。 -->
    <http_port>8123</http_port>

    <!-- 通过本机协议与以下设备交互的端口:
         - clickhouse-client 和其他原生 ClickHouse 工具(clickhouse-benchmark、clickhouse-copier);
         - clickhouse-server 与其他 clickhouse-servers 一起进行分布式查询处理;
         - ClickHouse驱动程序和应用程序支持本机协议,该协议也被非正式地称为“TCP 协议”);
         另请参阅“tcp_port_secure”以了解安全连接。

        含义:用于 ClickHouse 的原生协议通信的端口。包括与 ClickHouse 客户端、其他 ClickHouse 服务器、以及支持原生协议的应用程序进行交互。
        建议:确保此端口没有被其他服务占用。可以根据需求调整,但要确保网络安全策略允许这个端口的流量。
    -->
    <tcp_port>9992</tcp_port>

    <!-- 
        MySQL 兼容端口
        含义:与 MySQL 协议的兼容性。对于连接到此端口的应用程序,ClickHouse 将伪装成 MySQL。
        建议:如果需要兼容 MySQL 的应用程序连接此端口,确保没有其他服务占用此端口。如果不需要此功能,可以将其注释掉或删除。
     -->
    <mysql_port>9004</mysql_port>

    <!-- 
        PostgreSQL 兼容端口
        含义:与 PostgreSQL 协议的兼容性。对于连接到此端口的应用程序,ClickHouse 将假装是 PostgreSQL。 
        建议:如果需要兼容 PostgreSQL 的应用程序连接此端口,确保没有其他服务占用此端口。如果不需要此功能,可以将其注释掉或删除。
    -->
    <postgresql_port>9005</postgresql_port>

    <!-- 
        HTTPS 端口
        含义:用于 HTTP API 的安全连接(TLS/HTTPS)端口。必须配置证书才能启用此接口
        建议:如果需要通过 HTTPS 保护 HTTP API,启用此端口并配置 SSL/TLS 证书。如果不需要 HTTPS,可以保持注释状态。
    -->
    <!-- <https_port>8443</https_port> -->

    <!-- 
        安全 TCP 端口
        含义:用于原生接口的安全连接(TLS)的端口。需要配置证书来启用此接口。
        建议:如果需要通过 TLS 保护 TCP 连接,启用此端口并配置 SSL/TLS 证书。如果不需要安全连接,可以保持注释状态。
    -->
    <!-- <tcp_port_secure>9440</tcp_port_secure> -->

    <!--  
        带 PROXYv1 协议的 TCP 端口
        含义:用于与支持 PROXYv1 协议的代理服务器进行通信的端口。PROXYv1 头部会在每个连接中发送,ClickHouse 会从标头中提取有关代理转发的客户端地址的信息。
        建议:如果使用代理服务器并需要 PROXYv1 协议支持,启用此端口。如果不需要此功能,可以保持注释状态。
    -->
    <!-- <tcp_with_proxy_port>9011</tcp_with_proxy_port> -->

    <!-- 
        副本通信端口
        含义:用于副本之间通信的端口。用于数据交换。它提供服务器之间的低级数据访问。不应从不受信任的网络访问此端口,应该只在可信网络中开放。
        建议:确保此端口只在受信任的网络中开放,并采取适当的安全措施,防止未授权访问。 另请参见"interserver_https_port"、"interserver_http_credentials"。
      -->
    <interserver_http_port>9009</interserver_http_port>

    <!-- 
        TLS 加密的副本通信端口
        含义:使用 TLS 在副本之间进行通信的端口。用于副本间通信的 TLS 加密端口。要启用此端口,需要配置 SSL/TLS 证书。另请参阅“interserver_http_credentials”
        建议:如果你希望在副本间通信中使用 TLS 加密,可以启用此端口并确保配置了合适的 SSL/TLS 证书。特别是在不信任的网络中进行副本间通信时,建议启用此配置。
    -->
    <!-- <interserver_https_port>9010</interserver_https_port> -->

    <!-- 
        副本间通信的主机名
        含义:其他副本用于请求当前服务器的主机名。如果未指定,将类似于执行 hostname -f 命令自动确定主机名。此设置可用于在服务器连接到多个网络接口时,将复制操作切换到另一个网络接口。(服务器可能通过多个地址连接到多个网络)
        建议:如果你的服务器具有多个网络接口或主机名配置比较复杂,可以明确指定此主机名以确保副本间通信的稳定性。否则,可以保持注释状态,使用系统自动确定的主机名。 
    -->
    <!--
    <interserver_http_host>example.clickhouse.com</interserver_http_host>
    -->

    <!-- 
        副本间通信认证凭证
        含义:您可以指定用于副本之间身份验证的凭据。当可从不受信任的网络访问 interserver_https_port 时,这是必需的,还建议避免来自网络中可能受损的服务的 SSRF 攻击。
        建议:如果启用了 interserver_https_port 或者你的 ClickHouse 副本通信端口暴露在不信任的网络上,建议配置强密码的凭证以提高安全性。如果通信只发生在内部受信网络中,且通信端口没有暴露,可以选择不启用此配置。    
    -->
    <!--<interserver_http_credentials>
        <user>interserver</user>
        <password></password>
    </interserver_http_credentials>-->

    <!-- 监听指定地址。
         如果您想接受来自任何地方的 IPv4 和 IPv6 连接,请使用 ::(通配符 IPv6 地址)。
      
         如果您从通配符地址打开连接,请确保至少应用以下措施之一:
            - 服务器受防火墙保护,无法从不受信任的网络访问;
            - 所有用户都仅限于网络地址的子集(请参阅 users.xml);
            - 所有用户都有强密码,只能访问安全 (TLS) 接口,或者只能通过 TLS 接口进行连接。
            - 没有密码的用户具有只读访问权限。

        含义:此配置项定义 ClickHouse 服务器监听的地址。:: 是一个通配符地址,表示服务器将接受来自所有 IPv4 和 IPv6 地址的连接。
        建议:默认情况下,使用 :: 可以让服务器监听所有地址,但要确保你的服务器受到防火墙保护,避免从不信任的网络访问。也可以通过 users.xml 配置文件限制用户访问的网络地址,或确保所有用户使用强密码。
            如果不需要监听所有地址,可以指定一个具体的地址,如 127.0.0.1(仅本地)或特定的网络接口地址。
        另请参阅:https://www.shodan.io/search?query=clickhouse
      -->
    <listen_host>::</listen_host>


    <!-- 
        含义:0.0.0.0 表示监听所有可用的 IPv4 地址。这意味着服务器将接受来自所有 IPv4 地址的连接。
        建议:如果你的服务器只需要处理 IPv4 请求,并且需要从多个网络接口接受连接,可以启用此选项。否则,可以将此配置保持注释状态,选择其他合适的监听地址。
    -->
    <!-- <listen_host>0.0.0.0</listen_host> -->

    <!-- 
        默认值 - 尝试侦听 IPv4 和 IPv6 上的本地主机。
        含义:::1 是本地主机的 IPv6 地址,而 127.0.0.1 是本地主机的 IPv4 地址。这些配置用于指定服务器仅监听本地回环接口上的连接。
        建议:如果你的 ClickHouse 服务器只需要处理来自本地的请求,可以启用这些选项。通常在开发环境或需要更高安全性的场景中使用。 
    -->
    <!--
    <listen_host>::1</listen_host>
    <listen_host>127.0.0.1</listen_host>
    -->

    <!-- 
        副本间通信的监听地址
        含义:指定副本间通信的监听地址,默认与 <listen_host> 配置相同。
        建议:除非你的副本间通信需要通过不同的网络接口,否则可以保持注释状态,让它与 <listen_host> 一致。如果要分离网络流量,可以配置特定的地址。
    -->
    <!-- <interserver_listen_host>::</interserver_listen_host> -->
    <!-- Listen host for communication between replicas. Used for data exchange -->
    <!-- Default values - equal to listen_host -->

    <!-- 
        监听时的错误容忍
        含义:在尝试监听 IPv6 或 IPv4 网络不可用时,是否让服务器继续运行。如果设置为 0,则如果网络不可用,服务器会停止运行。
        建议:在大多数生产环境中,建议保持默认值 0,确保所有配置的网络都可用。如果在开发环境或特定的容错场景中,可以将其设置为 1 以继续运行。 
    -->
    <!-- <listen_try>0</listen_try> -->

    <!-- 
        端口复用
        含义:允许多个服务器在同一地址和端口上监听。通常不推荐这样做,因为可能会导致冲突。
        建议:除非你有明确的需求,比如在特定的负载均衡场景下使用此功能,否则建议保持为 0,即不启用端口复用。
    -->
    <!-- <listen_reuse_port>0</listen_reuse_port> -->

    <!-- 
        监听队列长度
        含义:定义操作系统为新的传入连接请求维护的队列长度。如果有大量的并发连接请求,此值可以影响服务器的性能。
        建议:4096 是一个相对较高的值,适用于高并发场景。如果你的 ClickHouse 服务器处理大量并发请求,可以考虑保留此值。如果并发量较小,可以根据需要调整。
    -->
    <!-- <listen_backlog>4096</listen_backlog> -->

    <!-- 
        最大连接数 
        含义:定义服务器可以同时处理的最大连接数。这个配置影响服务器的性能和资源使用。
        建议:4096 是一个常见的配置,适用于大多数生产环境。如果你发现服务器的负载过高,可能需要根据资源(如 CPU 和内存)情况适当调整此值。
    -->
    <max_connections>4096</max_connections>

    <!-- 
        HTTP 连接保持时间
        含义:用于 HTTP 1.1 中的 Connection: keep-alive 选项,定义连接在空闲状态下保持活动的时间(秒)。这有助于减少创建新连接的开销。
        建议:3 秒是一个合理的设置。如果你的应用程序需要长时间保持连接,可以适当增加这个值。如果希望减少资源占用,可以缩短这个时间。
    -->
    <keep_alive_timeout>3</keep_alive_timeout>



    <!-- ============================================================= 协议及安全相关配置 ================================================================ -->


    <!-- gRPC 协议(API 参见 src/Server/grpc_protos/clickhouse_grpc.proto) -->

    <!-- 
        gRPC 端口 
        含义:指定 gRPC 服务监听的端口。如果要启用 gRPC 服务,需要取消注释并设置合适的端口号。
        建议:如果你需要通过 gRPC 协议与 ClickHouse 交互,建议配置并启用这个端口。确保选择一个未被占用的端口号,并在防火墙规则中开放。
    -->
    <!-- <grpc_port>9100</grpc_port> -->

    <grpc>

        <!-- 
            是否启用 SSL
            含义:控制 gRPC 通信是否使用 SSL/TLS 加密。如果设置为 true,gRPC 通信将会加密。
            建议:如果 gRPC 服务在不安全的网络中运行,建议启用 SSL(设置为 true),并配置证书文件。否则,可以保持 false。
        -->
        <enable_ssl>false</enable_ssl>

        <!-- 以下两个文件只有enable_ss使用
            SSL 证书文件(<ssl_cert_file>)与密钥文件(<ssl_key_file>)
            含义:当 SSL 启用时,这些选项指定服务器使用的 SSL 证书文件和对应的私钥文件的路径。
            建议:在启用 SSL 的情况下,需要配置这两个文件的路径,确保路径正确且证书和密钥文件有效。
        -->
        <ssl_cert_file>/path/to/ssl_cert_file</ssl_cert_file>
        <ssl_key_file>/path/to/ssl_key_file</ssl_key_file>

        <!-- 
            客户端证书验证
            含义:决定服务器是否要求客户端提供证书进行身份验证。如果设置为 true,服务器将要求客户端提供证书,增加安全性。
            建议:在高安全性环境下,建议启用客户端证书验证(设置为 true)。否则,可以保持为 false。
        -->
        <ssl_require_client_auth>false</ssl_require_client_auth>

        <!-- 
            客户端 CA 证书文件(只有 ssl_require_client_auth=1  使用以下文件)
            含义:如果启用了客户端证书验证(<ssl_require_client_auth> 设置为 true),此选项指定用于验证客户端证书的 CA 证书文件路径。
            建议:在启用客户端验证的情况下,需要正确配置此文件路径,确保 CA 证书有效。
        -->
        <ssl_ca_cert_file>/path/to/ssl_ca_cert_file</ssl_ca_cert_file>

        <!-- 默认传输压缩类型(可以由客户端覆盖,请参阅 QueryInfo 中的 Transport_compression_type 字段)。支持的算法:none、deflate、gzip、stream_gzip
            含义:指定 gRPC 传输中的压缩算法。支持的算法包括 none(无压缩)、deflate、gzip 和 stream_gzip。
            建议:默认 none 适用于大多数情况。如果你需要减少带宽占用,可以选择合适的压缩算法,比如 gzip。
        -->
        <transport_compression_type>none</transport_compression_type>

        <!-- 
            传输压缩级别 
            含义:定义传输压缩的级别,范围为 0 到 3。数字越大,压缩效果越好,但可能增加 CPU 开销。
            建议:0 表示不压缩。如果选择了压缩算法,可以根据需要调整压缩级别。建议在压缩与性能之间找到平衡点。
        -->
        <transport_compression_level>0</transport_compression_level>

        <!-- 发送/接收消息大小限制(以字节为单位)。 -1表示无限制
            含义:设置 gRPC 传输的最大消息大小,单位为字节。-1 表示不限制消息大小。
            建议:默认 -1 适用于大多数场景。如果你的应用程序有特定的消息大小要求,可以设置合适的限制值。 
        -->
        <max_send_message_size>-1</max_send_message_size>
        <max_receive_message_size>-1</max_receive_message_size>

        <!-- 如果您想要非常详细的日志,请启用
            含义:控制是否启用详细的 gRPC 日志。详细日志可以帮助调试,但可能会生成大量日志数据。
            建议:在生产环境中,建议保持 false 以避免过多日志。如果需要调试,可以暂时设置为 true。
        -->
        <verbose_logs>false</verbose_logs>
    </grpc>





    <!-- Used with https_port and tcp_port_secure. Full ssl options list: https://github.com/ClickHouse-Extras/poco/blob/master/NetSSL_OpenSSL/include/Poco/Net/SSLManager.h#L71 -->
    <openSSL>
        <server> <!-- 用于https服务器和安全的tcp端口 -->
            <!-- openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt -->
            
            <!-- 
                证书文件和私钥文件
                含义:指定服务器使用的 SSL 证书文件和对应的私钥文件。这两个文件用于加密通信。
                建议:如果你启用了 HTTPS 或者安全的 TCP 端口(tcp_port_secure),需要将这两个选项的注释取消,并配置证书文件路径。确保文件路径正确且证书有效。
            -->
            <!-- 
            <certificateFile>/etc/clickhouse-server/server.crt</certificateFile>
            <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile> 
            -->


            <!-- Diffie-Hellman 参数文件,dhparams 是可选的。您可以删除 <dhParamsFile> 元素。
                 要生成 dhparams,请使用以下命令: openssl dhparam -out /etc/clickhouse-server/dhparam.pem 4096 仅支持带有 BEGIN DH PARAMETERS 的文件格式。
                含义:指定 Diffie-Hellman 参数文件,用于加强 SSL/TLS 的安全性。这是可选配置。
                建议:除非你有特定的安全需求,否则可以忽略此配置。如果需要,确保参数文件存在并有效。
              -->
            <!-- <dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile>-->

            <!-- 
                验证模式
                含义:控制服务器如何验证客户端证书。如果设置为 none,则不要求客户端提供证书。
                建议:大多数情况下,保持 none 是合适的。如果需要更高的安全性,可以根据需求调整为 relaxed 或 strict。        
            -->
            <verificationMode>none</verificationMode>

            <!-- 
                加载默认 CA 文件
                含义:指定是否加载系统默认的 CA 证书文件,用于验证客户端证书。
                建议:保持为 true,以确保服务器可以验证从受信任 CA 签发的客户端证书。
            -->
            <loadDefaultCAFile>true</loadDefaultCAFile>

            <!-- 
                会话缓存
                含义:启用 SSL 会话缓存,以提高重复连接的性能。
                建议:建议启用以提高性能。
            -->
            <cacheSessions>true</cacheSessions>

            <!-- 
                禁用旧协议
                含义:禁用不安全的 SSLv2 和 SSLv3 协议。
                建议:保持该配置,禁用旧协议以确保安全。
            -->
            <disableProtocols>sslv2,sslv3</disableProtocols>

            <!-- 
                优先使用服务器的密码套件
                含义:优先使用服务器配置的密码套件,而不是客户端的。
                建议:保持为 true,以确保使用安全性较高的密码套件。
            -->
            <preferServerCiphers>true</preferServerCiphers>

            <!-- 无效证书处理 -->
            <invalidCertificateHandler>
                <!-- 
                    含义:指定如何处理无效的客户端证书。服务器通常拒绝无效证书。
                    建议:保持为 RejectCertificateHandler,以确保无效证书被拒绝。
                -->
                <name>RejectCertificateHandler</name>
            </invalidCertificateHandler>
        </server>



        <!-- 
            用于连接到 https 字典源和安全的 Zookeeper 通信,这些配置项与服务器端类似,建议保持默认配置
        -->
        <client> 
            <!-- 
                默认 CA 文件加载
                含义:同样适用于客户端,用于验证服务器证书。
                建议:保持为 true,确保客户端能够验证从受信任 CA 签发的服务器证书。
            -->
            <loadDefaultCAFile>true</loadDefaultCAFile>
            <cacheSessions>true</cacheSessions>
            <disableProtocols>sslv2,sslv3</disableProtocols>
            <preferServerCiphers>true</preferServerCiphers>
            <!-- Use for self-signed: <verificationMode>none</verificationMode> -->
            <invalidCertificateHandler>
                <!-- Use for self-signed: <name>AcceptCertificateHandler</name> -->
                <name>RejectCertificateHandler</name>
            </invalidC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值