跳转到主要内容

操作步骤

以下步骤可用于借助免费、自动化且开放的证书颁发机构 (CA) Let’s Encrypt ,为单个 ClickHouse 服务器启用 SSL。Let’s Encrypt 旨在让任何人都能轻松使用 HTTPS 保护自己的网站。通过自动化证书签发和续期流程,Let’s Encrypt 可确保网站持续保持安全,无需人工干预。
在以下指南中,我们假设 ClickHouse 已安装在标准的软件包路径中。所有示例均使用域名 product-test-server.clickhouse-dev.com。请根据实际情况替换为您的域名。
  1. 确认您已有一条指向您的 server 的 DNS AAAAA 记录。这可以使用 Linux 工具 dig. 来完成。例如,若使用 Cloudflare DNS server 1.1.1.1,则 product-test-server.clickhouse-dev.com 的响应如下:

请注意下方确认存在 A 记录的部分。
  1. 在服务器上开放 80 端口。该端口将用于通过 certbot 和 ACME 协议自动续订证书。对于 AWS,可通过修改实例关联的安全组 (Security Group) 来实现。

  1. 安装 certbot,例如使用 apt

  1. 获取 SSL 证书

我们的服务器上没有运行 Web 服务器,因此请选择 (1),允许 Certbot 使用独立的临时 Web 服务器。
系统提示时,输入服务器的完整域名,例如 product-test-server.clickhouse-dev.com
Let’s Encrypt 的政策是不为某些类型的域名签发证书,例如公共云提供商生成的域名 (如 AWS 的 *.compute.amazonaws.com 域名) 。这些域名被视为共享基础设施,出于安全和防滥用考虑会被禁止。
  1. 将证书复制到 ClickHouse 目录中。

此命令会设置一个 cron 作业,用于自动管理 ClickHouse 服务器的 Let’s Encrypt SSL 证书。它会以 root 用户身份每分钟运行一次,仅在文件发生更新时,才将 Let’s Encrypt 目录中的 .pem 文件复制到 ClickHouse 服务器的配置目录。复制完成后,脚本会将这些文件的所有者更改为 clickhouse 用户和组,以确保服务器具备所需的访问权限。它还会对复制后的文件设置安全的只读权限 (chmod 400) ,以确保严格的文件安全性。这样,ClickHouse 服务器始终都能访问最新的 SSL 证书,无需手动干预,从而在保障安全性的同时尽可能降低运维开销。
  1. 在 clickhouse-server 中配置这些证书的使用。

  1. 重启 ClickHouse 服务器

  1. 验证 ClickHouse 能否通过 SSL 进行通信

要使最后一步正常工作,你可能需要确保 8443 端口可访问,例如在 AWS 的安全组 (Security Group) 中放行该端口。或者,如果你只想从服务器访问 ClickHouse,请修改 hosts 文件,即:
如果你要从通配符地址开放连接,请确保至少采取了以下一项措施:
  • 服务器受防火墙保护,且无法从不受信任的网络访问;
  • 所有用户都被限制为只能使用部分网络地址 (参见 users.xml) ;
  • 所有用户都设置了强密码,且仅开放安全的 (TLS) 接口,或者连接仅通过 TLS 接口建立。
  • 无密码用户仅具有只读访问权限。
另请参见:https://www.shodan.io/search?query=clickhouse博客 Building single page applications with ClickHouse 可作为保护公网实例安全的参考。
如果你是从运行 ClickHouse 的本机发起连接,以下配置也应适用。要通过 product-test-server.clickhouse-dev.com 连接,请在你的环境中开放 9440 端口:
最后修改于 2026年6月10日