Кодирование / настройка сервера OpenSSL для максимальной совместимости - PullRequest
0 голосов
/ 12 октября 2011

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

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

SSL_CTX_set_options(ctx, SSL_OP_ALL);

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

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

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

1 Ответ

2 голосов
/ 12 октября 2011

Я знаю несколько вещей, которые повышают совместимость 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!

...