Перейти к основному содержанию
Эта страница не применима к ClickHouse Cloud. Описанная здесь процедура в сервисах ClickHouse Cloud выполняется автоматически.
В этом руководстве приведены простые минимальные настройки для конфигурации ClickHouse с использованием сертификатов OpenSSL для проверки соединений. В этом примере создаются самоподписанные сертификат и ключ центра сертификации (CA), а также сертификаты узлов, чтобы установить соединения с нужными параметрами.
Реализация TLS сложна, и для обеспечения полностью безопасного и надежного развертывания нужно учитывать множество нюансов. Это базовое руководство с примерами настройки одностороннего TLS. Обратитесь к своей команде PKI/безопасности, чтобы сгенерировать сертификаты, подходящие для вашей организации.Для общего ознакомления см. это базовое руководство по использованию сертификатов.
1

Создайте развертывание ClickHouse

Это руководство написано для Ubuntu 20.04; ClickHouse на указанных ниже хостах устанавливается из DEB-пакета (через apt). Домен: marsnet.local:
Подробнее об установке ClickHouse см. в руководстве Быстрый старт.
2

Создание TLS-сертификатов

Самоподписанные сертификаты используются только в демонстрационных целях и не должны применяться в продакшн. Запросы на сертификаты должны создаваться для подписи организацией и проверяться с использованием цепочки CA, которая будет настроена в параметрах. Однако эти шаги можно использовать для настройки и тестирования параметров, а затем заменить реальными сертификатами, которые будут использоваться в дальнейшем.
  1. Сгенерируйте ключ, который будет использоваться для нового CA:
  2. Сгенерируйте новый самоподписанный CA‑сертификат. Следующая команда создаст новый сертификат, который будет использоваться для подписи других сертификатов с помощью ключа CA:
Сохраните резервную копию ключа и CA‑сертификата в безопасном месте вне кластера. После генерации сертификатов узлов ключ следует удалить с узлов кластера.
  1. Проверьте содержимое нового CA‑сертификата:
  2. Создайте запрос на сертификат (CSR) и сгенерируйте ключ для каждого узла:
  3. Используя CSR и CA, создайте новые пары сертификатов и ключей:
  4. Проверьте сертификаты на наличие полей subject и issuer:
  5. Убедитесь, что новые сертификаты проходят проверку по CA‑сертификату:
3

Создайте и настройте каталог для хранения сертификатов и ключей.

Это нужно сделать на каждом узле. На каждом хосте используйте соответствующие сертификаты и ключи.
  1. Создайте папку в каталоге, доступном для ClickHouse, на каждом узле. Мы рекомендуем использовать каталог конфигурации по умолчанию (например, /etc/clickhouse-server):
  2. Скопируйте CA‑сертификат, сертификат узла и соответствующий ему ключ в новый каталог certs на каждом узле.
  3. Измените владельца и права доступа, чтобы ClickHouse мог читать сертификаты:
4

Настройка среды с базовыми кластерами на основе ClickHouse Keeper

Для данной среды развёртывания на каждом узле используются следующие настройки ClickHouse Keeper. У каждого сервера будет собственный <server_id>. (Например, <server_id>1</server_id> для узла chnode1 и т. д.)
Для ClickHouse Keeper рекомендуется использовать порт 9281. Однако порт можно настроить и изменить, если в вашей среде он уже занят другим приложением.Полное описание всех параметров см. по адресу https://clickhouse.com/docs/operations/clickhouse-keeper/
  1. Добавьте следующий код внутрь тега <clickhouse> в файле config.xml сервера ClickHouse
Для продакшн-сред рекомендуется использовать отдельный файл конфигурации .xml в каталоге config.d. Подробнее см. https://clickhouse.com/docs/operations/configuration-files/
Когда ClickHouse Keeper встроен в ClickHouse server (как показано выше), Keeper использует конфигурацию OpenSSL сервера, заданную в разделе OpenSSL статьи Настройка TLS‑интерфейсов на узлах ClickHouse. Если ClickHouse Keeper запущен как автономный процесс, необходимо добавить раздел <openSSL> в конфигурационный файл Keeper с теми же настройками CA‑сертификата и сертификата/ключа узла. Подробности см. ниже в разделе Настройка OpenSSL для автономного ClickHouse Keeper.
  1. Раскомментируйте и обновите параметры Keeper на всех узлах, установив флаг <secure> равным 1:
  2. Обновите и добавьте следующие настройки кластера на chnode1 и chnode2. chnode3 будет использоваться для кворума ClickHouse Keeper.
Для этой конфигурации настроен только один пример кластера. Тестовые кластеры-примеры необходимо либо удалить, либо закомментировать, либо, если тестируется существующий кластер, обновить порт и добавить параметр <secure>. Необходимо указать <user и <password>, если для пользователя default изначально был задан пароль при установке или в файле users.xml.
Следующая конфигурация создаёт кластер с одной репликой сегмента на двух серверах (по одному на каждом узле).
  1. Задайте значения макросов, чтобы создать таблицу ReplicatedMergeTree для тестирования. На chnode1:
    На chnode2:
5

Настройте TLS-интерфейсы на узлах ClickHouse

Приведенные ниже параметры настраиваются в config.xml сервера ClickHouse
  1. Задайте отображаемое имя для развертывания (необязательно):
  2. Настройте ClickHouse на прослушивание внешних портов:
  3. Настройте порт https и отключите порт http на каждом узле:
  4. Настройте защищенный TCP-порт ClickHouse Native и отключите стандартный незащищенный порт на каждом узле:
  5. Настройте порт interserver https и отключите стандартный незащищенный порт на каждом узле:
  6. Настройте OpenSSL, указав сертификаты и пути
Имена файлов и пути должны быть обновлены в соответствии с узлом, на котором выполняется настройка. Например, при настройке узла chnode2 укажите в записи <certificateFile> значение chnode2.crt.
Дополнительные сведения см. по адресу https://clickhouse.com/docs/operations/server-configuration-parameters/settings/#server&#95;configuration&#95;parameters-openssl
  1. Настройте TLS для gRPC на каждом узле:
    Дополнительные сведения см. по адресу https://clickhouse.com/docs/interfaces/grpc/
  2. Настройте клиент ClickHouse как минимум на одном из узлов для использования TLS-соединений в его собственном файле config.xml (по умолчанию — в /etc/clickhouse-client/):
  3. Отключите порты эмуляции MySQL и PostgreSQL, используемые по умолчанию:
6

Тестирование

  1. Запустите все узлы по очереди:
  2. Убедитесь, что защищённые порты открыты и прослушиваются; на каждом узле это должно выглядеть примерно так:
  3. Проверьте состояние ClickHouse Keeper Типичные команды из 4 букв (4lW) не будут работать с echo без TLS; вот как использовать эти команды через openssl.
    • Запустите интерактивный сеанс в openssl
  • Отправьте команды 4LW в сеансе OpenSSL
  1. Запустите клиент ClickHouse, указав флаг --secure и порт TLS:
  2. Войдите в интерфейс Play через https-интерфейс по адресу https://chnode1.marsnet.local:8443/play.
браузер покажет, что сертификат не является доверенным, поскольку доступ к нему осуществляется с рабочей станции, а сертификаты отсутствуют в хранилищах корневых CA на клиентской машине. При использовании сертификатов, выпущенных общедоступным центром сертификации или корпоративным CA, он должен отображаться как доверенный.
  1. Создайте реплицируемую таблицу:
  2. Добавьте несколько строк на chnode1:
  3. Проверьте репликацию, просмотрев строки на chnode2:

Настройка OpenSSL для автономного ClickHouse Keeper

Если ClickHouse Keeper запускается как автономный процесс (а не в составе ClickHouse server), сертификаты и параметры OpenSSL нужно настраивать отдельно в файле конфигурации Keeper. Без этого Keeper не сможет устанавливать защищённые соединения для связи с клиентами (tcp_port_secure) и для Raft-репликации между узлами Keeper. Добавьте следующий раздел <openSSL> в файл конфигурации автономного ClickHouse Keeper на каждом узле:
Имя каждого файла нужно изменить в соответствии с узлом, на котором выполняется настройка. Например, при настройке на хосте chnode2 укажите в записи <certificateFile> значение chnode2.crt.
Раздел <server> используется для входящих клиентских подключений на защищённом порту Keeper (tcp_port_secure). Раздел <client> используется для исходящих подключений между узлами Keeper во время репликации Raft.
В примерах выше для сертификатов используется путь /etc/clickhouse-keeper/certs/ — это типичный путь для автономных установок Keeper. Если вы установили Keeper в другой каталог, скорректируйте путь соответствующим образом. Сами сертификаты — те же, что были созданы на шаге 2.

Режимы проверки OpenSSL и обработчики сертификатов

Конфигурация <openSSL> поддерживает несколько вариантов для <verificationMode> и <invalidCertificateHandler>, которые определяют, как ClickHouse проверяет TLS-сертификаты. Эти настройки применяются к clickhouse-server, clickhouse-client и автономному ClickHouse Keeper.

Режимы проверки

Задайте <verificationMode> в разделе <server> или <client> элемента <openSSL>:

Обработчики недействительных сертификатов

Задайте <invalidCertificateHandler> в разделе <server> или <client> внутри <openSSL>. Этот обработчик определяет, что происходит при сбое проверки сертификата. На стороне сервера он управляет реакцией на недействительные клиентские сертификаты. На стороне клиента он управляет реакцией на недействительные сертификаты сервера.

Пример: отключение проверки сертификата

Отключение проверки сертификата отключает проверку подлинности TLS и делает соединения уязвимыми для атак типа «человек посередине». Используйте эту конфигурацию только в изолированных средах разработки или тестирования.
Чтобы полностью отключить проверку сертификата (например, при использовании самоподписанных сертификатов в тестовой среде), задайте для verificationMode значение none и используйте AcceptCertificateHandler. Для clickhouse-client также можно использовать флаг командной строки --accept-invalid-certificate, который автоматически применяет оба параметра. clickhouse-client (/etc/clickhouse-client/config.xml):
clickhouse-server (config.xml или файл в config.d/). В разделе <server> по-прежнему нужно указать пути к сертификату и ключу, поскольку сервер должен предъявлять клиентам собственный сертификат, даже если он не проверяет их сертификаты:
Автономный ClickHouse Keeper (файл конфигурации Keeper):

Краткое резюме

В этой статье мы рассмотрели настройку среды ClickHouse с использованием TLS. Параметры в продакшн-среде будут отличаться в зависимости от требований; например, уровни проверки сертификатов, протоколы, шифры и т. д. Но теперь вы должны лучше понимать, какие шаги нужны для настройки и внедрения защищённых соединений.
Последнее изменение 10 июня 2026 г.