Кодирование/настройка сервера OpenSSL для максимальной совместимости

Я кодирую сервер SSL в C + OpenSSL. Это довольно просто, и есть много примеров для подражания.

Однако мне необходимо взаимодействовать с широким спектром устаревших клиентов, некоторые из которых действительно устарели и имеют множество ошибок, которые мешают согласованию SSL работать. Привлечь пользователей этих клиентов к обновлению в лучшем случае нецелесообразно.

SSL_CTX_set_options(ctx, SSL_OP_ALL);

... помогает, но все еще есть клиенты, которые не могут установить SSL-соединение.

Какие еще меры я могу предпринять, чтобы сделать OpenSSL максимально совместимым?

(Примером проблемного клиента является Kermit95 для Windows, скомпилированный, по-моему, в 2003 году с libssleay.dll в каталоге установки. Хотя исходный код Kermit95 сейчас бесплатен, даже сопровождающий не знает, как его собрать в Windows! )


person slim    schedule 12.10.2011    source источник


Ответы (1)


Я знаю несколько вещей, которые повышают совместимость openSSL.

  1. Используйте «ВСЕ» или «ВСЕ: ЭКСПОРТ: НИЗКИЙ». Я не проверял, действительно ли ВСЕ означает ВСЕ.
  2. Существует опция времени компиляции для повторного включения шифров EXPORT56 в openSSL. Вам нужно будет установить для TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES значение 1 в ssl/tls1.h. По умолчанию они отключены
  3. Некоторые бинарные дистрибутивы, включая RedHat, не содержат никаких шифров, имеющих проблемы с патентами.
  4. Экспериментальные шифры, вероятно, потребуют 512-битного ключа RSA. См. пример кода здесь: http://www.openssl.org/docs/ssl/SSL_CTX_set_tmp_rsa_callback.html

Основной ответ - скомпилируйте свой собственный openSSL!

person Gary Barker    schedule 12.10.2011
comment
... добавление журнала для дампа списка шифров SSL_CTX было полезным. - person slim; 14.10.2011