Перейти к основному содержанию

Порядок действий

Следующие шаги можно использовать, чтобы включить SSL для одного сервера ClickHouse с помощью Let’s Encrypt — бесплатного, автоматизированного и открытого центра сертификации (CA), созданного для того, чтобы любому было проще защищать свои веб-сайты с помощью HTTPS. Автоматизируя процесс выпуска сертификата и renewal сертификатов, Let’s Encrypt позволяет поддерживать безопасность веб-сайтов без ручного вмешательства.
В этом руководстве предполагается, что ClickHouse установлен в стандартные каталоги пакетов. Во всех примерах используется домен product-test-server.clickhouse-dev.com. Замените его на свой домен.
  1. Убедитесь, что у вас есть DNS-запись A или AAAA, указывающая на ваш сервер. Это можно проверить с помощью Linux-утилиты dig. Например, ответ для product-test-server.clickhouse-dev.com при использовании DNS-сервера Cloudflare 1.1.1.1:

Обратите внимание на раздел ниже, где подтверждается наличие записи типа A.
  1. Откройте порт 80 на вашем сервере. Этот порт будет использоваться для автоматического продления сертификата с помощью протокола ACME и certbot. В AWS это можно сделать, изменив связанный с инстансом Security Group.

  1. Установите certbot, например с помощью apt

  1. Получите SSL-сертификат

На нашем сервере не запущен веб-сервер, поэтому выберите вариант (1), чтобы Certbot использовал автономный временный веб-сервер.
Когда появится запрос, введите полное доменное имя вашего сервера, например product-test-server.clickhouse-dev.com.
У Let’s Encrypt действует политика, запрещающая выдачу сертификатов для некоторых типов доменов, например доменов, сгенерированных публичными облачными провайдерами (таких как AWS *.compute.amazonaws.com). Такие домены считаются общей инфраструктурой и блокируются в целях безопасности и предотвращения злоупотреблений.
  1. Скопируйте сертификаты в каталог ClickHouse.

Эта команда настраивает cron-задачу для автоматического управления SSL-сертификатами Let’s Encrypt для сервера ClickHouse. Она выполняется каждую минуту от имени пользователя root и копирует файлы .pem из каталога Let’s Encrypt в каталог конфигурации сервера ClickHouse, но только если эти файлы были обновлены. После копирования скрипт меняет владельца файлов на пользователя и группу clickhouse, чтобы у сервера были необходимые права доступа. Он также устанавливает безопасные разрешения только для чтения (chmod 400) для скопированных файлов, чтобы обеспечить строгую защиту файлов. Благодаря этому сервер ClickHouse всегда имеет доступ к актуальным SSL-сертификатам без ручного вмешательства, что позволяет сохранять безопасность и сводить к минимуму операционные накладные расходы.
  1. Настройте использование этих сертификатов в clickhouse-server.

  1. Перезапустите сервер ClickHouse

  1. Проверьте, что ClickHouse может взаимодействовать по SSL

Чтобы этот последний шаг сработал, вам, возможно, потребуется убедиться, что порт 8443 доступен, например добавлен в вашу Security Group в AWS. Либо, если вам нужен доступ к 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 в вашем:
Последнее изменение 29 июня 2026 г.