Установка версии TLS для кластера ADH

В данной статье показано, как установить определенную версию TLS для SSL-коммуникаций в кластере ADH, а также приведены инструкции для проверки текущей версии TLS.

На момент релиза ADH 2.1.10.b1 минимально поддерживаемая версия TLS — TLSv1.2, что обусловлено использованием Java 8. TLSv1.3 поддерживается в JDK11+ и сборках JDK8 8u261 или более поздних (JRE 1.8.0_261-b12+).

Выбор версии TLS

Вы можете выбрать желаемую версию TLS для всего ADH кластера с помощью параметра TLS Version, который доступен при выполнении действия Enable SSL. На момент релиза ADH 2.1.10.b1 единственной доступной версией является TLSv1.2.

enable ssl
Выбор версии TLS

Настройки TLS для отдельных ADH сервисов

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

Настройки TLS для сервисов ADH
Сервис Файл конфигурации Параметр Значение по умолчанию Описание

Hive

/etc/hive/conf/hive-site.xml

hive.ssl.protocol.blacklist

SSLv2Hello,SSLv2,SSLv3,TLSv1,TLSv1.1

Отключает указанные TLS-протоколы для всех Hive Servers

TezUI

/etc/nginx/nginx.conf

server.ssl_protocols

TLSv1.2

Список TLS-протоколов, разделенных запятой, которые могут использоваться для SSL-соединений

Metastore

/etc/hive/conf/hive-site.xml

metastore.ssl.protocol.blacklist

SSLv2Hello,SSLv2,SSLv3,TLSv1,TLSv1.1

Отключает указанные TLS-протоколы для Hive Metastore

HDFS, YARN

/etc/hadoop/conf/core-site.xml

hadoop.ssl.enabled.protocols

TLSv1.2

Разделенный запятыми список TLS-протоколов, используемый для HDFS DataNode

Spark2/Spark3

  • /etc/spark/conf/spark-defaults.conf

  • /etc/spark3/conf/spark-defaults.conf

spark.ssl.protocol

TLSv1.2

Указывает TLS-протокол для SSL-соединений

Livy (for Spark2/Spark3)

  • /etc/livy/conf/livy.conf

  • /etc/livy-spark3/conf/livy.conf

livy.server.thrift.ssl.protocol.blacklist

SSLv2,SSLv3,TLSv1,TLSv1.1

Отключает указанные TLS-протоколы

Flink

/etc/flink/conf/flink-conf.yaml

security.ssl.protocol

TLSv1.2

Указывает определенную версию TLS. Указание нескольких значений через запятую не поддерживается

ZooKeeper 3.5.5+

/etc/zookeeper/conf/zoo.cfg

  • ssl.protocol

  • ssl.quorum.protocol

TLSv1.2

ssl.protocol устанавливает TLS-протокол для коммуникации между клиентами. ssl.quorum.protocol устанавливает TLS-протокол для коммуникации при выборе кворума

Проверка версии TLS

Чтобы определить версию TLS, которая используется в ADH, можно использовать curl или OpenSSL, как показано ниже.

Проверка с помощью curl

В следующем примере curl отправляет HTTPS-запрос к Hive server, используя устаревший TLSv1.1.

$ curl https://ka-adh-1.ru-central1.internal:10002/  --insecure --tlsv1.1 --tls-max 1.1

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

curl: (35) Peer reports incompatible or unsupported protocol version

Если не указывать --tlsv1.1 --tls-max 1.1, будет использован TLSv1.2 (по умолчанию) и curl вернет содержимое web-страницы.

Проверка с помощью OpenSSL

Следующей командой OpenSSL открывает SSL-соединение с сервером Tez и пытается получить SSL-сертификаты, используя устаревший TLSv1.1.

$ openssl s_client -connect ka-adh-2.ru-central1.internal:9999 -tls1_1

OpenSSL не удается установить безопасное соединение из-за неподдерживаемой версии TLS.

no peer certificate available. No client certificate CA names send

Если не указывать -tls1_1, будет использован TLSv1.2 (по умолчанию) и OpenSSL получит SSL-сертификат.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней