Во время рукопожатия SSL / TLS клиент отправляет список поддерживаемых наборов шифров, и сервер выбирает, какой из них использовать для разговора. Windows имеет приоритетный список наборов шифров (настраиваемый через реестр) и выберет первый набор в этом списке, который поддерживается клиентом. После создания списка приемлемых шифров с использованием флагов набора шифров, какой алгоритм использует OpenSSL для выбора набора шифров, когда он действует как сервер? Я не нашел ответа в документации OpenSSL.
Выбор шифра сервера OpenSSL
Ответы (2)
Взгляните на эту страницу руководства.
Команда cipherlist преобразует списки шифров OpenSSL в упорядоченные списки предпочтений шифров SSL. Его можно использовать как тестовый инструмент для определения подходящего шифровального списка.
Список отправленных клиентом комплектов шифров упорядочен; первый набор в списке является наиболее предпочтительным для клиента. Обычно OpenSSL как сервер учитывает предпочтения клиента: он выбирает наиболее предпочтительный для клиента набор из списка наборов, поддерживаемых как клиентом, так и сервером.
Начиная с OpenSSL-0.9.7 (выпущенного в конце 2002 г.), OpenSSL имеет программный флаг под названием SSL_OP_CIPHER_SERVER_PREFERENCE, который обеспечивает выполнение настроек сервера: список наборов шифров, поддерживаемых сервером, также упорядочен по предпочтениям, и сервер выбирает набор, который сам сервер предпочитает из тех, которые поддерживаются как клиентом, так и сервером. Этот флаг задокументирован во включаемом файле ssl.h.
С помощью команды «s_server» командной строки параметр «-serverpref» используется для активации флага SSL_OP_CIPHER_SERVER_PREFERENCE.