| Описание: | Cipher Suite доступен для согласования при рукопожатии SSL |
| Синтаксис: | SSLCipherSuite cipher-spec |
| По умолчанию: | SSLCipherSuite DEFAULT (depends on OpenSSL version) |
| Контекст: | конфигурация сервера, виртуальный хост, каталог, .htaccess |
| Переопределить: | Аутконфиг |
| Статус: | Расширение |
| Модуль: | mod_ssl |
Эта сложная директива использует разделенную двоеточием строку спецификации шифра , состоящую из спецификаций шифра OpenSSL, для настройки комплекта шифров, который клиенту разрешено согласовывать на этапе подтверждения SSL. Обратите внимание, что эту директиву можно использовать как в контексте сервера, так и в контексте каталога. В контексте каждого сервера он применяется к стандартному рукопожатию SSL при установлении соединения. В контексте каждого каталога он вызывает повторное согласование SSL с перенастроенным набором шифров после того, как HTTP-запрос был прочитан, но до отправки HTTP-ответа.
Спецификация шифра SSL в cipher-spec состоит из 4 основных атрибутов плюс несколько дополнительных второстепенных:
- Алгоритм обмена ключами :
RSA, Диффи-Хеллман, эллиптическая кривая Диффи-Хеллмана, безопасный удаленный пароль
- Алгоритм аутентификации :
RSA, Diffie-Hellman, DSS, ECDSA или нет.
- Алгоритм шифрования/шифрования :
AES, DES, Triple-DES, RC4, RC2, IDEA и т. д.
- Алгоритм дайджеста MAC :
MD5, SHA или SHA1, SHA256, SHA384.
Шифр SSL также может быть экспортным шифром. Шифры SSLv2 больше не поддерживаются. Чтобы указать, какие шифры использовать, можно либо указать все шифры по одному, либо использовать псевдонимы для указания предпочтения и порядка шифров (см. Таблицу 1). Фактически доступные шифры и псевдонимы зависят от используемой версии openssl. Более новые версии openssl могут включать дополнительные шифры.
| Ярлык | Описание |
| Алгоритм обмена ключами: |
kRSA | Обмен ключами RSA |
kDHr | Обмен ключами Диффи-Хеллмана с ключом RSA |
kDHd | Обмен ключами Диффи-Хеллмана с ключом DSA |
kEDH | Эфемерный (temp.key) обмен ключами Диффи-Хеллмана (без сертификата) |
kSRP | Обмен ключами безопасного удаленного пароля (SRP) |
| Алгоритм аутентификации: |
aNULL | Нет аутентификации |
aRSA | RSA-аутентификация |
aDSS | DSS-аутентификация |
aDH | Аутентификация Диффи-Хеллмана |
| Алгоритм кодирования шифра: |
eNULL | Без шифрования |
NULL | псевдоним для eNULL |
AES | AES-шифрование |
DES | DES-шифрование |
3DES | Тройное шифрование DES |
RC4 | Шифрование RC4 |
RC2 | Шифрование RC2 |
IDEA | Шифрование ИДЕИ |
| Алгоритм дайджеста MAC : |
MD5 | Хэш-функция MD5 |
SHA1 | Хэш-функция SHA1 |
SHA | псевдоним для SHA1 |
SHA256 | Хэш-функция SHA256 |
SHA384 | Хэш-функция SHA384 |
| Псевдонимы: |
SSLv3 | все шифры SSL версии 3.0 |
TLSv1 | все шифры TLS версии 1.0 |
EXP | все экспортные шифры |
EXPORT40 | только все 40-битные экспортные шифры |
EXPORT56 | только все 56-битные экспортные шифры |
LOW | все шифры низкой стойкости (без экспорта, одиночный DES) |
MEDIUM | все шифры со 128-битным шифрованием |
HIGH | все шифры с использованием Triple-DES |
RSA | все шифры с использованием обмена ключами RSA |
DH | все шифры, использующие обмен ключами Диффи-Хеллмана |
EDH | все шифры с использованием эфемерного обмена ключами Диффи-Хеллмана |
ECDH | Обмен ключами Диффи-Хеллмана на эллиптических кривых |
ADH | все шифры с использованием анонимного обмена ключами Диффи-Хеллмана |
AECDH | все шифры с использованием анонимного обмена ключами Диффи-Хеллмана на эллиптических кривых |
SRP | все шифры с использованием обмена ключами Secure Remote Password (SRP) |
DSS | все шифры с использованием аутентификации DSS |
ECDSA | все шифры, использующие аутентификацию ECDSA |
aNULL | все шифры без аутентификации |
Теперь становится интересным то, что их можно объединить, чтобы указать порядок и шифры, которые вы хотите использовать. Чтобы ускорить это, существуют также псевдонимы ( SSLv3, TLSv1, EXP, LOW, MEDIUM,
HIGH ) для определенных групп шифров. Эти теги могут быть объединены вместе с префиксами, чтобы сформировать спецификацию шифрования . Доступные префиксы:
- none: добавить шифр в список
-
+ : переместить совпадающие шифры в текущее место в списке
-
- : удалить шифр из списка (можно добавить позже)
-
! : полностью убить шифр из списка (нельзя добавить позже снова)
aNULL , eNULL а EXP
шифры всегда отключены
Начиная с версии 2.4.7, нулевые и экспортные шифры всегда отключены, так как mod_ssl безоговорочно добавляется
!aNULL:!eNULL:!EXP к любой строке шифра при инициализации.
Более простой способ взглянуть на все это - использовать openssl ciphers
-v команду `` '', которая обеспечивает хороший способ последовательного создания правильной строки спецификации шифра . Строка спецификации шифрования по умолчанию зависит от версии используемых библиотек OpenSSL. Предположим, что это `` RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5 '', что означает следующее: Поставьте RC4-SHA and AES128-SHA в начале. Мы делаем это, потому что эти шифры предлагают хороший компромисс между скоростью и безопасностью. Затем включите шифры с высоким и средним уровнем безопасности. Наконец, удалите все шифры, которые не аутентифицируют, т. е. для SSL анонимные шифры Диффи-Хеллмана, а также все шифры, использующие
MD5 алгоритм хеширования, потому что он оказался недостаточным.
$ openssl ciphers -v 'RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5'
RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1
AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
... ... ... ... ...
SEED-SHA SSLv3 Kx=RSA Au=RSA Enc=SEED(128) Mac=SHA1
PSK-RC4-SHA SSLv3 Kx=PSK Au=PSK Enc=RC4(128) Mac=SHA1
KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1
Полный список конкретных шифров RSA и DH для SSL приведен в таблице 2.
Пример
SSLCipherSuite RSA:!EXP:!NULL:+HIGH:+MEDIUM:-LOW
| Шифр-тег | Протокол | Ключ Экс. | Аут. | Приложение | МАК | Тип |
| Шифры RSA: |
DES-CBC3-SHA | SSLv3 | ЮАР | ЮАР | 3DES(168) | SHA1 | |
IDEA-CBC-SHA | SSLv3 | ЮАР | ЮАР | ИДЕЯ(128) | SHA1 | |
RC4-SHA | SSLv3 | ЮАР | ЮАР | РК4(128) | SHA1 | |
RC4-MD5 | SSLv3 | ЮАР | ЮАР | РК4(128) | MD5 | |
DES-CBC-SHA | SSLv3 | ЮАР | ЮАР | ДЕС(56) | SHA1 | |
EXP-DES-CBC-SHA | SSLv3 | ЮАР(512) | ЮАР | ДЕС(40) | SHA1 | экспорт |
EXP-RC2-CBC-MD5 | SSLv3 | ЮАР(512) | ЮАР | РК2(40) | MD5 | экспорт |
EXP-RC4-MD5 | SSLv3 | ЮАР(512) | ЮАР | РК4(40) | MD5 | экспорт |
NULL-SHA | SSLv3 | ЮАР | ЮАР | Никто | SHA1 | |
NULL-MD5 | SSLv3 | ЮАР | ЮАР | Никто | MD5 | |
| Шифры Диффи-Хеллмана: |
ADH-DES-CBC3-SHA | SSLv3 | ЦТ | Никто | 3DES(168) | SHA1 | |
ADH-DES-CBC-SHA | SSLv3 | ЦТ | Никто | ДЕС(56) | SHA1 | |
ADH-RC4-MD5 | SSLv3 | ЦТ | Никто | РК4(128) | MD5 | |
EDH-RSA-DES-CBC3-SHA | SSLv3 | ЦТ | ЮАР | 3DES(168) | SHA1 | |
EDH-DSS-DES-CBC3-SHA | SSLv3 | ЦТ | DSS | 3DES(168) | SHA1 | |
EDH-RSA-DES-CBC-SHA | SSLv3 | ЦТ | ЮАР | ДЕС(56) | SHA1 | |
EDH-DSS-DES-CBC-SHA | SSLv3 | ЦТ | DSS | ДЕС(56) | SHA1 | |
EXP-EDH-RSA-DES-CBC-SHA | SSLv3 | ДХ(512) | ЮАР | ДЕС(40) | SHA1 | экспорт |
EXP-EDH-DSS-DES-CBC-SHA | SSLv3 | ДХ(512) | DSS | ДЕС(40) | SHA1 | экспорт |
EXP-ADH-DES-CBC-SHA | SSLv3 | ДХ(512) | Никто | ДЕС(40) | SHA1 | экспорт |
EXP-ADH-RC4-MD5 | SSLv3 | ДХ(512) | Никто | РК4(40) | MD5 | экспорт |