Настройка TLS#

CedrusData Catalog работает по протоколу HTTP, и может передавать или получать чувствительную информацию, такую как имена пользователей, пароли и ключи доступа. По умолчанию шифрование трафика между каталогом и клиентами отключено. Вы можете настроить TLS для шифрования трафика.

Выбор стратегии шифрования трафика#

Существует два способа конфигурации шифрования клиентских подключений к CedrusData Catalog.

  • С использованием балансировщика нагрузки или прокси-сервера. В данном случае клиент CedrusData Catalog подключается к балансировщику нагрузки или прокси-северу с использованием TLS/HTTPS, после чего последний перенаправляет запрос к CedrusData по протоколу HTTP (TLS termination). Данный способ является предпочтительным и более простым в конфигурации.

  • С использованием TLS сертификатов. Данный способ подходит, если вы можете получить действительные сертификаты от службы безопасности вашей организации, или же если вы хотите использовать самоподписанные сертификаты для тестирования и отладки.

Использование TLS termination proxy#

Ваша организация может иметь балансировщик нагрузки или proxy-сервер, который уже обеспечивает шифрование трафика клиентских подключений. В таком случае вы можете попросить ваших администраторов настроить балансировщик или proxy-сервер таким образом, чтобы он подключался к CedrusData Catalog по протоколу HTTP, добавляя специальный forwarded заголовок к HTTP-запросам, например X-Forwarded-Proto: https. Данный заголовок указывает каталогу, что клиент подключился к балансировщику или proxy-серверу по протоколу HTTPS, и должный уровень безопасности уже обеспечен. В таком случае конфигурация TLS сертификатов в каталоге не требуется.

Для включения поддержки TLS termination proxy задайте параметр конфигурации server.http.process-forwarded:

server.http.process-forwarded=true

Шифрование с помощью сертификатов#

Вы можете использовать сертификаты для шифрования трафика между каталогом и клиентами. Для этого вам необходимо получить TLS сертификат и установить его в каталог.

Конфигурация#

Добавьте следующие параметры конфигурации HTTP-сервера, чтобы включить поддержку TLS:

server.https.enabled=true
server.https.keystore-path=etc/clustercoord.pem

Параметр server.https.enabled включает поддержку HTTPS. Параметр server.https.keystore-path задает путь к файлу с сертификатом.

Примечание

Включение TLS не приводит к автоматическому отключению протокола HTTP, который обычно запущен на порту 9080. Для явного отключения протокола HTTP используйте параметр конфигурации server.http.enabled=false.

Если для сертификата установлен пароль (обязателен для JKS, не поддерживается для PEM), укажите его в параметре конфигурации server.https.keystore-password:

server.https.keystore-password=<keystore-password>

Если запись сертификата внутри JKS keystore имеет собственный пароль, укажите ее в параметре конфигурации server.https.keymanager-password:

server.https.keymanager-password=<key-password>

Проверка сертификата#

Перед установкой сертификата мы рекомендуем провести ручную проверку его содержимого. Проблемы с сертификатами часто приводят к сложным в анализе сообщениям об ошибках. Предварительная проверка содержимого сертификата зачастую может сэкономить существенное количество времени.

Поддерживаемые сертификаты#

CedrusData Catalog поддерживает сертификаты TLS 1.2 и TLS 1.3. Сертификаты TLS 1.1, TLS 1.0 и SSL не поддерживаются. CedrusData Catalog поддерживает сертификаты и приватные ключи PKCS #1 и PKCS #8 в формате PEM, PKCS #12, а также ключи в формате Java KeyStore (JKS). Сертификаты и приватные ключи в бинарном формате (например, DER) должны быть предварительно преобразованы в один из поддерживаемых форматов.

Получение сертификата#

Вы можете получить сертификат одним из следующих способов.

  • Доверенный сертификат — сертификат, которому автоматически доверяют все клиентские приложения. Для получения доверенного сертификата необходимо обратиться к производителю доверенных сертификатов. Таким производителем могут быть:

    • Коммерческие компании (SSL Certificate providers), например DigiCert или Comodo

    • Компании, которые предоставляют бесплатные доверенные сертификаты, например letsencrypt.org

    • Регистраторы доменных имен, например GoDaddy

    • Облачные провайдеры

  • Корпоративный сертификат — сертификат, которому доверяют браузеры и клиентские приложения вашей организации. Обычно за выпуск таких сертификатов отвечает IT-отдел организации, который поддерживает собственное хранилище доверенных сертификатов и обеспечивает конфигурацию клиентских приложений таким образом, чтобы они доверяли сертификатам из хранилища.

  • Сгенерированный self-signed сертификат — сертификат, который самостоятельно сгенерирован с помощью приложений типа openssl, keytool или certtool. Такие сертификаты не являются доверенными по умолчанию для других приложений, что обусловливает необходимость дополнительной конфигурации клиентских приложений. Например, утилита командой строки каталога </cli> по умолчанию не разрешает работу с самоподписанным сертификатом; вам потребуется явно отключить проверку сертификатов в утилите.

Выбор алгоритмов шифрования#

По умолчанию CedrusData Catalog выбирает алгоритм шифрования из списка поддерживаемых алгоритмов текущей JVM, исключая те алгоритмы, который не поддерживают forward secrecy (FS).

Вы можете получить список поддерживаемых алгоритмов шифрования текущей JVM с помощью следующей команды:

echo "java.util.Arrays.asList(((javax.net.ssl.SSLServerSocketFactory) \
javax.net.ssl.SSLServerSocketFactory.getDefault()).getSupportedCipherSuites()).forEach(System.out::println)" | jshell -

Вы можете изменить список поддерживаемых алгоритмов шифрования с помощью параметра конфигурации server.https.included-cipher-suites. Значением данного параметра являются имена алгоритмов шифрования, разделенные запятой, в порядке уменьшения приоритета. Например:

server.https.included-cipher-suites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256

По умолчанию CedrusData Catalog не разрешает использование алгоритмов шифрования, которые не используют forward secrecy. Если вы хотите использовать такой алгоритм, необходимо дополнительно установить параметр конфигурации server.https.included-excluded-suites в пустое значение:

server.https.included-cipher-suites=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256
server.https.included-excluded-suites=

Выбор допустимых алгоритмов шифрования часто определяется политиками безопасности организации. Использование нестандартного алгоритма может потребовать установки дополнительных пакетов. Кроме того, некоторые алгоритмы шифрования могут иметь экспортные ограничения. Проконсультируйтесь со службой информационной безопасности вашей организации перед выбором конкретных алгоритмов шифрования.