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