Cipher Suites

Application Delivery Controller использует библиотеку OpenSSL для задания набора криптографических алгоритмов (cipher suites), применяемых при установлении TLS-соединений.

Для получения списка поддерживаемых шифров выполните команду:

openssl ciphers

Настройка выполняется в конфигурационном файле:

/usr/local/apisix/conf/config.yml

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

apisix:
  ssl:
    enable: true
    ssl_ciphers: ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-GCM-SHA256
    ssl_conf_command: Ciphersuites TLS_CHACHA20_POLY1305_SHA256

ssl_ciphers — задаёт список шифров для протоколов TLS версий TLSv1.2, TLSv1.1 и TLSv1. Используется синтаксис OpenSSL для задания списка шифров, поддерживающий модификаторы, группировки и управление приоритетом шифров.

ssl_conf_command — используется для настройки TLSv1.3. Позволяет задать явный перечень допустимых шифров TLSv1.3 без использования модификаторов и выражений.

Приоритет шифров определяется порядком их перечисления слева направо.

Формирование списка шифров

Управляющие модификаторы

Обозначение Описание

(без префикса)

Добавляет шифр в конец списка

!

Жёстко исключает шифр без возможности повторного добавления

-

Исключает шифр с возможностью последующего добавления

+

Перемещает шифр или группу в конец списка

+ (в выражении)

Логическое пересечение, например RSA+AES, только те, где есть и RSA, и AES.

@

Модифицирует список, например @STRENGTH, @SECLEVEL=n

Списки

Обозначение Описание

ALL

Все доступные шифры, кроме eNULL

COMPLEMENTOFALL

Шифры, не входящие в ALL

DEFAULT

Стандартный набор OpenSSL

COMPLEMENTOFDEFAULT

Шифры, отключённые по умолчанию

Уровни криптографической стойкости

Обозначение Описание

HIGH

Высокая стойкость (ключ более 128 бит)

MEDIUM

Средняя стойкость (128 бит)

LOW

Низкая стойкость (56–64 бит)

EXPORT

Устаревшие экспортные шифры

Алгоритмы обмена ключами

Обозначение Описание

EECDH, kEECDH

Эллиптический Диффи–Хеллман (PFS)

DHE, kDHE

Эфемерный Диффи–Хеллман (PFS)

RSA, kRSA

Обмен ключами на основе RSA (без PFS)

PSK, kPSK

Использование предварительно разделяемого ключа

SRP, kSRP

Аутентификация на основе пароля

kGOST

Алгоритмы обмена ключами по ГОСТ

Алгоритмы аутентификации

Обозначение Описание

aRSA

Аутентификация с использованием RSA-сертификата

aECDSA

Аутентификация с использованием ECDSA-сертификата

aNULL

Без аутентификации

aPSK

Аутентификация на основе общего секрета

Симметричное шифрование

Обозначение Описание

AESGCM

AES в режиме GCM

CHACHA20

ChaCha20-Poly1305

AES

Алгоритмы AES (128/256 бит)

CAMELLIA, ARIA

Альтернативные алгоритмы

3DES, DES

Устаревшие алгоритмы

RC4, RC2

Небезопасные алгоритмы

eNULL

Без шифрования

Контроль целостности

Обозначение Описание

AEAD

Режимы с встроенной проверкой целостности

SHA256, SHA384

Актуальные алгоритмы SHA-2

SHA1

Устаревший алгоритм

MD5

Скомпрометированный алгоритм

Пример формирования списка шифров

Пример списка шифров с исключением небезопасных алгоритмов и приоритизацией современных криптографических наборов:

ssl_ciphers: HIGH:!aNULL:!MD5:!RC4:!3DES:+AESGCM:+CHACHA20

Описание:

  • HIGH — включает шифры с высокой криптографической стойкостью

  • !aNULL — исключает шифры без аутентификации

  • !MD5 — исключает небезопасные алгоритмы хеширования

  • !RC4, !3DES — исключает устаревшие алгоритмы шифрования

  • +AESGCM, +CHACHA20 — понижает приоритет указанных алгоритмов, перемещая их в конец списка