Назад | Перейти на главную страницу

Синтаксис строки шифрования в nginx

В файле конфигурации nginx вы можете настроить список шифров SSL, подобный этому

ssl_ciphers                HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;

Каков синтаксис этой строки шифра? То есть я знаю (или думаю, что знаю, поправьте меня, если я ошибаюсь), что эта строка предназначена для предоставления списка возможных шифров SSL, а также для предоставления им приоритета. какой документация менее хорош в объяснении формата этой строки.

Конкретные вопросы

Есть ли ресурс, объясняющий, как работает эта строка, или это тот случай, когда люди, которые, как ожидается, будут работать со строкой, также должны прочитать исходный код nginx, чтобы выяснить, как это работает?

Этот синтаксис взят из OpenSSL. Видеть ФОРМАТ СПИСКА ШИФРОВ.

Далее в нем перечислены различные шифры и эти мета-шифры, такие как HIGH

Отрывок:

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

Фактическая строка шифра может иметь несколько различных форм.

Он может состоять из одного набора шифров, такого как RC4-SHA.

Он может представлять собой список наборов шифров, содержащих определенный алгоритм, или наборов шифров определенного типа. Например, SHA1 представляет все наборы шифров с использованием алгоритма дайджеста SHA1, а SSLv3 представляет все алгоритмы SSL v3.

Списки комплектов шифров можно объединить в одну строку шифров с помощью символа +. Это используется как логическая операция. Например, SHA1 + DES представляет все наборы шифров, содержащие алгоритмы SHA1 и DES.

Каждой строке шифра могут предшествовать символы!, - или +.

Если ! используется, то шифры безвозвратно удаляются из списка. Удаленные шифры никогда не могут снова появиться в списке, даже если они явно указаны.

Если используется - тогда шифры удаляются из списка, но некоторые или все шифры могут быть добавлены снова с помощью более поздних опций.

Если используется +, шифры перемещаются в конец списка. Эта опция не добавляет никаких новых шифров, она просто перемещает соответствующие существующие.

...

Nginx ssl_ciphers директива использует Формат списка шифров OpenSSL.

это список шифров описывается как один или несколько строки шифров обычно разделенные двоеточиями или запятыми (пробелы также поддерживаются OpenSSL, но вам придется заключить список в кавычки с помощью nginx).

Строка шифрования конкретный набор шифров или комплекты шифров, сгруппированные по ключевому слову.

По умолчанию OpenSSL поставляется со списком шифров по умолчанию, определенным во время компиляции библиотеки и исключающим комплекты шифров без шифрования или аутентификации в очевидных целях безопасности. Так должно быть ALL:!aNULL:!eNULL что касается OpenSSL 1.0.

Например строка шифра HIGH означает, что все комплекты шифров, обеспечивающие шифрование с ключами более 128 бит, в то время как строка шифрования LOW сопоставляет наборы шифров с использованием 56- или 64-битных ключей. Также, AES256-GCM-SHA384 и ECDHE-RSA-RC4-SHA являются частными наборами шифров.

Условное обозначение ! означает удалить группу комплектов шифров или конкретный комплект шифров, когда сервер обменивается поддерживаемыми наборами шифров с клиентом на этапе установления связи. Например !eNULL и !aNULL означает удаление комплектов шифров, не обеспечивающих шифрование и аутентификацию.