Подключение к кластеру через TLS с помощью self-signed сертификата#

Для включения аутентификации в CedrusData необходимо предварительно настроить безопасное подключение пользователей к кластеру через TLS. В production окружении обычно для этого используют либо сертификаты, выданные удостоверяющим центром или IT-службой организации, либо proxy-server или load balancer, реализующий TLS termination proxy.

Перечисленные выше способы безопасного подключения пользователей могут быть недоступны или избыточны в тестовых и development средах. В таком случае шифровать трафик между клиентом и координатором можно с помощью self-signed сертификата. Данное руководство описывает процесс создания self-signed сертификата и его использования для шифрования трафика.

Предупреждение

Применяйте данный подход только для тестирования и разработки. Никогда не используйте self-signed сертификаты в production окружении.

Создание сертификата#

Для создания сертификата вам потребуется JDK (Java Development Kit) произвольной версии. В состав JDK входит утилита для работы с сертификатам keytool, которая расположена в директории $JAVA_HOME/bin.

Выполните следующую команду, чтобы создать self-signed сертификат в формате JKS:

keytool -genkeypair \
  -storetype jks \
  -keystore selfsigned.jks \
  -alias selfsigned \
  -storepass password \
  -keypass password \
  -keyalg RSA \
  -keysize 2048 \
  -validity 360 \
  -dname "CN=My SSL Certificate, OU=My Team, O=My Company, L=My City, ST=My State, C=SA"

После выполнения команды в текущей директории появится файл selfsigned.jks, который содержит самоподписанный сертификат и приватный ключ.

Настройка CedrusData#

Добавьте следующие параметры конфигурации в файл etc/config.properties на координаторе, указав актуальный путь к файлу selfsigned.jks. Поменяйте порт HTTPS при необходимости.

http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/path/to/selfsigned.jks
http-server.https.keystore.key=password
http-server.authentication.allow-insecure-over-http=false

Запустите координатор.

Подключение#

При подключении через JDBC драйвер используйте указанный в конфигурации порт, а так же добавьте параметры SSL=true и SSLVerification=NONE:

jdbc:trino://<host>:<https_port>?SSL=true&SSLVerification=NONE

При подключении через Trino CLI используйте следующий синтаксис:

bin/trino --server https://<host>:<https_port> --insecure

Для работы с Web UI используйте адрес https://<host>:<https_port>. Большинство современных браузеров не позволяют открывать сайты с self-signed сертификатами. Если вы открываете браузер на том же компьютере, где запущен узел, вы можете настроить браузер таким образом, чтобы он разрешал работу c self-signed сертификатами, загруженными через localhost. В браузерах на основе Chromium для этого необходимо задать параметру конфигурации Allow invalid certificates for resources loaded from localhost значение Enabled. Например:

  • Google Chrome: откройте страницу chrome://flags/#allow-insecure-localhost

  • Yandex Browser: откройте страницу browser://flags/#allow-insecure-localhost

После этого вы сможете открыть Web UI по ссылке https://localhost:<https_port>.

Вы так же можете настроить CedrusData на одновременную работу с HTTPS и HTTP. В таком случае вы сможете открыть Web UI по адресу http://<host>:<http_port>. Для этого задайте в etc/config.properties следующий параметр конфигурации:

http-server.authentication.allow-insecure-over-http=true