В файле конфигурации nginx вы можете настроить список шифров SSL, подобный этому
ssl_ciphers HIGH:!aNULL:!eNULL:!LOW:!ADH:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
Каков синтаксис этой строки шифра? То есть я знаю (или думаю, что знаю, поправьте меня, если я ошибаюсь), что эта строка предназначена для предоставления списка возможных шифров SSL, а также для предоставления им приоритета. какой документация менее хорош в объяснении формата этой строки.
Конкретные вопросы
Это !
отрицание? То есть делает !DSS
значит не использовать DSS? Или это !DSS
то же самое с шифром?
Являются ли :
разделители символов? То есть над списком шифров "HIGH,! ANULL,! ENULL, и т. Д.", Или :
означает что-то еще
Являются HIGH
и LOW
то же самое для шифров, или это какие-то особые метадирективы
Не изображено выше, но я видел такие строки AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:
. Являются ли -
символы являются частью имени шифра, или они имеют особое значение?
Есть ли ресурс, объясняющий, как работает эта строка, или это тот случай, когда люди, которые, как ожидается, будут работать со строкой, также должны прочитать исходный код 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
означает удаление комплектов шифров, не обеспечивающих шифрование и аутентификацию.