跳到主要内容

解决 ClickHouse 中的 SSL 证书验证错误

·一分钟阅读
了解如何解决 SSL 异常 `CERTIFICATE_VERIFY_FAILED` 错误。

解决 ClickHouse 中的 SSL 证书验证错误

该错误通常报告为

DB::NetException: SSL Exception: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

错误原因

尝试使用 clickhouse-client 连接到 ClickHouse 服务器时,会发生此错误。错误的原因是以下之一

  • 客户端配置文件 config.xml 缺少机器 CA 默认存储中的根证书,或者
  • 存在未配置的自签名或内部 CA 证书

解决方案

如果使用内部或自签名 CA,请在客户端目录(例如 /etc/clickhouse-client)的 config.xml 中配置 CA 根证书,并禁用从默认位置加载默认根 CA 证书。

这是一个配置示例

<openSSL>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<caConfig>/etc/clickhouse-server/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<invalidCertificateHandler>
<name>RejectCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>

其他资源

查看 https://clickhouse.ac.cn/docs/en/interfaces/cli/#configuration_files