Использование TLS | Tdb_Resp

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

Tarantool DB (RESP) поддерживает шифрование трафика с использованием протокола TLS. По умолчанию используется протокол mTLS, в котором проверяется не только серверный, но и клиентский сертификат.

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

Чтобы включить TLS, используйте опцию конфигурации tls_enable.

Содержание:

Примеры конфигурации

TLS

В примере сертификаты хранятся в директории certs. Простая конфигурация TLS при этом может выглядеть так:

{
  port = 6388,
  tls_enable=true,
  tls_auth_clients=false,
  tls_cert_file="certs/server.crt",
  tls_key_file="certs/server.key",
  tls_ca_cert_file="certs/ca.crt"
}

Здесь:

  • port – номер порта для подключения;

  • tls_enable – включение TLS;

  • tls_auth_clients – отключение проверки сертификатов клиента через протокол mTLS;

  • tls_cert_file – путь к сертификату в формате PEM;

  • tls_key_file – путь к сертификату PKCS #8 в формате PEM;

  • tls_ca_cert_file – путь к корневому сертификату в формате PEM.

Полное описание опций конфигурации TLS приведено в разделе Справочник по конфигурации TLS.

mTLS

Конфигурация mTLS для самоподписанного сертификата может выглядеть так:

{
  port = 6388,
  tls_enable=true,
  tls_auth_clients=true,
  tls_trust_ca=true,
  tls_cert_file="certs/server.crt",
  tls_key_file="certs/server.key",
  tls_ca_cert_file="certs/ca.crt"
}

Здесь:

  • port – номер порта для подключения;

  • tls_enable – включение TLS;

  • tls_auth_clients – включение проверки сертификатов клиента через протокол mTLS;

  • tls_trust_ca – добавление указанного корневого сертификата в список доверенных сертификатов;

  • tls_cert_file – путь к сертификату в формате PEM;

  • tls_key_file – путь к сертификату PKCS #8 в формате PEM;

  • tls_ca_cert_file – путь к корневому сертификату в формате PEM.

Полное описание опций конфигурации TLS приведено в разделе Справочник по конфигурации TLS.

ГОСТ TLS

Для использования TLS с криптографическими алгоритмами ГОСТ требуется установленный движок gost-engine, который глобально настроен в качестве движка по умолчанию. Конфигурация TLS с шифрами ГОСТ при этом может выглядеть следующим образом:

{
  port = 6388,
  tls_enable=true,
  tls_auth_clients=true,
  tls_trust_ca=true,
  tls_cert_file="certs/server.crt",
  tls_key_file="certs/server.key",
  tls_ca_cert_file="certs/ca.crt",
  tls_min_version=2,
  tls_max_version=2,
  tls_ciphers_prior_v13="GOST2012-MAGMA-MAGMAOMAC:GOST2012-KUZNYECHIK-KUZNYECHIKOMAC:LEGACY-GOST2012-GOST8912-GOST8912:IANA-GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89"
}

Здесь:

  • port – номер порта для подключения;

  • tls_enable – включение TLS;

  • tls_auth_clients – включение проверки сертификатов клиента через протокол mTLS;

  • tls_trust_ca – добавление указанного корневого сертификата в список доверенных сертификатов;

  • tls_cert_file – путь к сертификату в формате PEM;

  • tls_key_file – путь к сертификату PKCS #8 в формате PEM;

  • tls_ca_cert_file – путь к корневому сертификату в формате PEM;

  • tls_min_version – минимальная допустимая версия TLS, разрешенная для подключения;

  • tls_max_version – максимальная допустимая версия TLS, разрешенная для подключения;

  • tls_ciphers_prior_v13 – список шифров, разделенных двоеточиями, которые используются для всех соединений по TLS-протоколу ниже версии 1.3.

Полное описание опций конфигурации TLS приведено в разделе Справочник по конфигурации TLS.

Справочник по конфигурации TLS

tls_enable

Включить TLS-шифрование. Если эта опция отключена, остальные опции конфигурации не будут иметь никакого эффекта.

Пример конфигурации: TLS.

Тип: boolean

Значение по умолчанию: false

tls_auth_clients

Включить проверку сертификатов клиента через протокол mTLS.

Пример конфигурации: mTLS.

Тип: boolean

Значение по умолчанию: true

tls_ca_cert_file

Путь к корневому сертификату в формате PEM. Если для опции tls_auth_clients задано значение true, значение опции tls_ca_cert_file также используется для проверки сертификатов клиентов.

Тип: string

tls_cert_file

Путь к сертификату в формате PEM.

Тип: string

tls_ciphers_prior_v13

Список шифров, разделенных двоеточиями, которые используются для всех соединений по TLS-протоколу ниже версии 1.3. По умолчанию используются рекомендации Mozilla по настройке TLS на стороне сервера со средним (intermediate) уровнем совместимости. Такой уровень предполагает следующий список шифров:

ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:\
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:\
DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

Тип: string

tls_ciphers_v13

Список наборов шифров (cipher suites), разделенных двоеточиями, которые используются для всех соединений по TLS-протоколу версии 1.3.

Тип: string

Значение по умолчанию: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

tls_key_file

Путь к сертификату PKCS #8 в формате PEM.

Примечание

В целях безопасности права доступа к файлу ключа не должны превышать значения 600. Если права доступа превысят это пороговое значение, Tarantool DB (RESP) намеренно прекратит свою работу.

Тип: string

tls_max_version

Максимальная допустимая версия TLS, разрешенная для подключения. Возможные значения опции соответствуют версиям TLS:

  • 0 – версия 1.0;

  • 1 – версия 1.1;

  • 2 – версия 1.2;

  • 3 – версия 1.3.

Тип: number

Значение по умолчанию: 3

tls_min_version

Минимальная допустимая версия TLS, разрешенная для подключения. Возможные значения опции соответствуют версиям TLS:

  • 0 – версия 1.0;

  • 1 – версия 1.1;

  • 2 – версия 1.2;

  • 3 – версия 1.3.

Тип: number

Значение по умолчанию: 2

tls_trust_ca

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

Тип: boolean

Значение по умолчанию: false

Нашли ответ на свой вопрос?
Обратная связь